Changeset 1080
- Timestamp:
- 01/05/10 20:42:27 (14 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Distribution/doc/man/oscam.1
r1000 r1080 37 37 .TP 3n 38 38 \(bu 39 DVB API support, localhost only39 DVB API 3 support with AU support 40 40 .TP 3n 41 41 OSCam works on the following plattforms: -
trunk/Distribution/doc/man/oscam.conf.5
r1060 r1080 330 330 example: locals = 01001234,02005678 331 331 .RE 332 .SS "The [dvbapi] section" \fI(only if DVB API moduleenabled)\fR332 .SS "The [dvbapi] section" \fI(only if DVB API 3 module enabled)\fR 333 333 .PP 334 334 \fBenabled\fP = \fB0\fP|\fB1\fP 335 335 .RS 3n 336 1 = DVB API enabled, default:0336 1 = DVB API 3 enabled, default:0 337 337 .RE 338 338 .PP 339 339 \fBuser\fP = \fBusername\fP 340 340 .RS 3n 341 user name for DVB API client, default:anonymous341 user name for DVB API 3 client, default:anonymous 342 342 .RE 343 343 .PP … … 347 347 .RE 348 348 .PP 349 \fBsocket\fP = \fBfilename\fP 350 .RS 3n 351 camd socket file, default:none 352 353 example: socket = /tmp/camd.socket 349 \fBboxtype\fP = \fBufs910\fP|\fBdreambox\fP 350 .RS 3n 351 set boxtype, default:dreambox 354 352 .RE 355 353 .SS "The [anticasc] section" \fI(only if anti-cascading enabled)\fR -
trunk/Distribution/doc/txt/oscam.conf.txt
r1060 r1080 239 239 example: locals = 01001234,02005678 240 240 241 The [dvbapi] section (only if DVB API module enabled)241 The [dvbapi] section (only if DVB API 3 module enabled) 242 242 enabled = 0|1 243 1 = DVB API enabled, default:0243 1 = DVB API 3 enabled, default:0 244 244 245 245 user = username 246 user name for DVB API client, default:anonymous246 user name for DVB API 3 client, default:anonymous 247 247 248 248 au = 0|1 249 249 1 = enable AU, default:0 250 250 251 socket = filename 252 camd socket file, default:none 253 254 example: socket = /tmp/camd.socket 251 boxtype = ufs910|dreambox 252 set boxtype, default:dreambox 255 253 256 254 The [anticasc] section (only if anti-cascading enabled) -
trunk/Distribution/doc/txt/oscam.txt
r1000 r1080 33 33 CCcam with AU support, cascading/remote server ECM support 34 34 35 DVB API support, localhost only35 DVB API 3 support with AU support 36 36 37 37 OSCam works on the following plattforms: -
trunk/globals.h
r1074 r1080 572 572 int dvbapi_au; 573 573 char dvbapi_usr[64]; 574 char dvbapi_ socket[128];574 char dvbapi_boxtype[20]; 575 575 #endif 576 576 #ifdef CS_ANTICASC -
trunk/module-dvbapi.c
r1051 r1080 99 99 { 100 100 int dmx_fd; 101 int ca_offset=0; 101 102 char device_path[256]; 102 103 … … 104 105 sprintf(device_path, DMXDEV, index_demux); 105 106 else 106 sprintf(device_path, CADEV, demux[index_demux].cadev_index); 107 { 108 if (strcmp(cfg->dvbapi_boxtype, "ufs910")==0) 109 ca_offset=1; 110 111 sprintf(device_path, CADEV, index_demux+ca_offset); 112 } 107 113 108 114 if ((dmx_fd = open(device_path, O_RDWR)) < 0) … … 193 199 er->caid = caid; 194 200 er->pid = pid; 195 //er->prid = provid;201 er->prid = provid; 196 202 197 203 er->l=len; … … 330 336 331 337 // from tuxbox camd 332 333 338 int dvbapi_parse_capmt(unsigned char *buffer, unsigned int length) 334 339 { … … 342 347 switch (ca_pmt_list_management) 343 348 { 344 case 0x01: 345 346 //FIXME?? (first) 347 349 case 0x01: 350 //FIXME?? (first) 348 351 break; 349 case 0x03: 350 351 //default (only) 352 352 case 0x03: 353 //default (only) 353 354 break; 354 default: 355 356 //FIXME?? (unknown) 357 355 default: 356 //FIXME?? (unknown) 358 357 break; 359 358 } … … 367 366 return 0; 368 367 369 cs_d ump(buffer, length, "capmt:");368 cs_ddump(buffer, length, "capmt:"); 370 369 cs_log("dvbapi: new program number: %04x", program_number); 371 370 //cs_debug("program_info_length: %d", program_info_length); … … 414 413 { 415 414 int stream_type = buffer[i]; 416 int elementary_pid = ((buffer[i + 1] & 0x1F) << 8) | buffer[i + 2];415 unsigned short elementary_pid = ((buffer[i + 1] & 0x1F) << 8) | buffer[i + 2]; 417 416 es_info_length = ((buffer[i + 3] & 0x0F) << 8) | buffer[i + 4]; 418 417 … … 481 480 482 481 unsigned short provid=0; 483 //if (demux[demux_index].ECMpids[n].EMM_PID>0) 484 // provid=dvbapi_get_provid(demux_index, demux[demux_index].ECMpids[n].EMM_PID); 482 if (cfg->dvbapi_au==1) 483 { 484 if (demux[demux_index].ECMpids[n].EMM_PID>0) 485 provid=dvbapi_get_provid(demux_index, demux[demux_index].ECMpids[n].EMM_PID); 486 } 485 487 486 488 //cs_log("Provider ID: %04x", provid); 487 489 488 490 //grep ecm 489 490 491 dvbapi_get_single_ecm(demux_index, demux[demux_index].ECMpids[n].CA_System_ID,demux[demux_index].ECMpids[n].CA_PID, provid); 491 492 … … 555 556 memset(&servaddr, 0, sizeof(struct sockaddr_un)); 556 557 servaddr.sun_family = AF_UNIX; 557 strcpy(servaddr.sun_path, cfg->dvbapi_socket);558 strcpy(servaddr.sun_path, CAMDSOCKET); 558 559 clilen = sizeof(servaddr.sun_family) + strlen(servaddr.sun_path); 559 560 560 if ((unlink( cfg->dvbapi_socket) < 0) && (errno != ENOENT))561 if ((unlink(CAMDSOCKET) < 0) && (errno != ENOENT)) 561 562 return 0; 562 563 if ((listenfd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) … … 579 580 { 580 581 sleep(1); // check every second 581 //cs_ log("check zap");582 //cs_debug("dvbapi: check zap"); 582 583 583 584 connfd = accept(listenfd, (struct sockaddr *)&servaddr, (socklen_t *)&clilen); 584 585 585 if (connfd <= 0) //socket not available 586 if (connfd <= 0) { //socket not available 587 cs_debug("dvbapi: socket not available"); 586 588 break; 589 } 587 590 588 591 len = read(connfd, buffer, sizeof(buffer)); … … 590 593 if (len < 3) { 591 594 cs_debug("Client: camd.socket: too short message received"); 592 break;595 continue; 593 596 } 594 597 … … 597 600 if ((buffer[0] == 0x9F) && ((buffer[1] >> 7) == 0x01) && ((buffer[2] >> 7) == 0x00)) { 598 601 dvbapi_handlesockmsg(buffer, len); 602 } else { 603 cs_debug("dvbapi: invaild capmt"); 599 604 } 600 605 … … 602 607 603 608 } 609 610 cs_log("dvbapi: check_zap() aborted"); 604 611 return 0; 605 612 } … … 675 682 break; 676 683 677 if (s1.type==0) { 678 684 if (s1.type==0) { 679 685 //ECM 680 686 … … 697 703 er->srvid = demux[s1.index].program_number; 698 704 er->caid = demux[s1.index].ca_system_id; 699 //er->prid = demux[s1.index].provider_id;705 er->prid = demux[s1.index].provider_id; 700 706 701 707 er->l=len; … … 707 713 } 708 714 } 709 if (s1.type==1) { 710 715 if (s1.type==1) { 711 716 //EMM 712 717 … … 733 738 memcpy(epg.hexserial, reader[client[cs_idx].au].hexserial, 8); 734 739 735 //do_emm(&epg);740 do_emm(&epg); 736 741 737 742 } … … 750 755 pthread_t p1, p2; 751 756 752 if (cfg->dvbapi_socket[0]==0)753 strncpy(cfg->dvbapi_socket, CAMDSOCKET, sizeof(cfg->dvbapi_socket)-1);754 755 757 if (cfg->dvbapi_usr[0]==0) { 756 758 // 757 759 } 760 761 if (cfg->dvbapi_boxtype[0]==0) { 762 strncpy(cfg->dvbapi_boxtype, "dreambox", sizeof(cfg->dvbapi_boxtype)-1); 763 cs_log("dvbapi: boxtype not set. Assume boxtype=%s.", cfg->dvbapi_boxtype); 764 } else 765 cs_log("dvbapi: boxtype=%s.", cfg->dvbapi_boxtype); 758 766 759 767 for (i=0;i<MAX_DEMUX;i++) … … 784 792 pthread_create (&p2, NULL, thread_check_demux, NULL); 785 793 794 struct timeb tp; 795 cs_ftime(&tp); 796 tp.time+=500; 786 797 787 798 while (1) { … … 796 807 if (pfd2[0].revents & (POLLIN | POLLPRI)) { 797 808 chk_dcw(fd_m2c); 809 chk_pending(tp); 798 810 } 799 811 … … 807 819 unsigned char cw_0[8], cw_1[8]; 808 820 809 //cs_debug("dvbapi: ECM rc: %d", er->rc);821 cs_debug("dvbapi: ECM rc: %d", er->rc); 810 822 811 823 memcpy(cw_0, er->cw, 8); … … 816 828 int demux_index=dvbapi_get_index_by_prgnr(er->srvid); 817 829 if (demux_index>=0) { 818 if (er->rc ==0&& demux[demux_index].ca_system_id==0) {830 if (er->rc<=3 && demux[demux_index].ca_system_id==0) { 819 831 dvbapi_start_descramble(demux_index, er->caid, er->pid, er->prid); 820 832 } … … 823 835 } 824 836 825 if (er->rc!=0) 837 if (er->rc>3) { 838 cs_debug("dvbapi: cw not found"); 826 839 return; 840 } 827 841 828 842 ca_descr_t ca_descr; … … 841 855 memcpy(demux[demux_index].lastcw0,cw_0,8); 842 856 memcpy(ca_descr.cw,cw_0,8); 857 cs_debug("dvbapi: write cw1"); 843 858 if (ioctl(demux[demux_index].ca_fd, CA_SET_DESCR, &ca_descr) < 0) cs_debug("dvbapi: Error CA_SET_DESCR"); 844 859 } … … 850 865 memcpy(demux[demux_index].lastcw1,cw_1,8); 851 866 memcpy(ca_descr.cw,cw_1,8); 867 cs_debug("dvbapi: write cw2"); 852 868 if (ioctl(demux[demux_index].ca_fd, CA_SET_DESCR, &ca_descr) < 0) cs_debug("dvbapi: Error CA_SET_DESCR"); 853 869 } -
trunk/oscam-config.c
r1076 r1080 537 537 if (!strcmp(token, "enabled")) { cfg->dvbapi_enabled=atoi(value); return; } 538 538 if (!strcmp(token, "au")) { cfg->dvbapi_au=atoi(value); return; } 539 if (!strcmp(token, " socket")) { strncpy(cfg->dvbapi_socket, value, sizeof(cfg->dvbapi_socket)-1); return; }539 if (!strcmp(token, "boxtype")) { strncpy(cfg->dvbapi_boxtype, value, sizeof(cfg->dvbapi_boxtype)-1); return; } 540 540 if (!strcmp(token, "user")) { strncpy(cfg->dvbapi_usr, value, sizeof(cfg->dvbapi_usr)-1); return; } 541 541
Note:
See TracChangeset
for help on using the changeset viewer.