Changeset 1081


Ignore:
Timestamp:
01/05/10 21:00:59 (12 years ago)
Author:
alno
Message:

WebIf:

  • Merge trunk to 1080
  • Change Config DVB Api socket -> boxtype
  • Change write_config() socket -> boxtype
Location:
branches/monitor-improvement
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/monitor-improvement/Distribution/doc/man/oscam.1

    r1020 r1081  
    3737.TP 3n
    3838\(bu
    39 DVB API support, localhost only
     39DVB API 3 support with AU support
    4040.TP 3n
    4141OSCam works on the following plattforms:
  • branches/monitor-improvement/Distribution/doc/man/oscam.conf.5

    r1064 r1081  
    330330 example: locals = 01001234,02005678
    331331.RE
    332 .SS "The [dvbapi] section" \fI(only if DVB API module enabled)\fR
     332.SS "The [dvbapi] section" \fI(only if DVB API 3 module enabled)\fR
    333333.PP
    334334\fBenabled\fP = \fB0\fP|\fB1\fP
    335335.RS 3n
    336 1 = DVB API enabled, default:0
     3361 = DVB API 3 enabled, default:0
    337337.RE
    338338.PP
    339339\fBuser\fP = \fBusername\fP
    340340.RS 3n
    341 user name for DVB API client, default:anonymous
     341user name for DVB API 3 client, default:anonymous
    342342.RE
    343343.PP
     
    347347.RE
    348348.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
     351set boxtype, default:dreambox
    354352.RE
    355353.SS "The [anticasc] section" \fI(only if anti-cascading enabled)\fR
  • branches/monitor-improvement/Distribution/doc/txt/oscam.conf.txt

    r1064 r1081  
    239239       example: locals = 01001234,02005678
    240240
    241    The [dvbapi] section (only if DVB API module enabled)
     241   The [dvbapi] section (only if DVB API 3 module enabled)
    242242       enabled = 0|1
    243       1 = DVB API enabled, default:0
     243      1 = DVB API 3 enabled, default:0
    244244
    245245       user = username
    246       user name for DVB API client, default:anonymous
     246      user name for DVB API 3 client, default:anonymous
    247247
    248248       au = 0|1
    249249      1 = enable AU, default:0
    250250
    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
    255253
    256254   The [anticasc] section (only if anti-cascading enabled)
  • branches/monitor-improvement/Distribution/doc/txt/oscam.txt

    r1020 r1081  
    3333     CCcam with AU support, cascading/remote server ECM support
    3434
    35      DVB API support, localhost only
     35     DVB API 3 support with AU support
    3636
    3737       OSCam works on the following plattforms:
  • branches/monitor-improvement/globals.h

    r1078 r1081  
    579579  int       dvbapi_au;
    580580  char      dvbapi_usr[64];
    581   char      dvbapi_socket[128];
     581  char      dvbapi_boxtype[20];
    582582#endif
    583583#ifdef CS_ANTICASC
  • branches/monitor-improvement/module-dvbapi.c

    r1052 r1081  
    9999{
    100100    int dmx_fd;
     101    int ca_offset=0;
    101102    char device_path[256];
    102103
     
    104105        sprintf(device_path, DMXDEV, index_demux);
    105106    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    }
    107113
    108114    if ((dmx_fd = open(device_path, O_RDWR)) < 0)
     
    193199        er->caid  = caid;
    194200        er->pid   = pid;
    195         //er->prid  = provid;
     201        er->prid  = provid;
    196202
    197203        er->l=len;
     
    330336
    331337// from tuxbox camd
    332 
    333338int dvbapi_parse_capmt(unsigned char *buffer, unsigned int length)
    334339{
     
    342347    switch (ca_pmt_list_management)
    343348    {
    344         case 0x01:
    345            
    346             //FIXME?? (first)
    347            
     349        case 0x01:         
     350            //FIXME?? (first)           
    348351            break;
    349         case 0x03:
    350            
    351             //default (only)
    352            
     352        case 0x03:         
     353            //default (only)           
    353354            break;
    354         default:
    355            
    356             //FIXME?? (unknown)
    357            
     355        default:           
     356            //FIXME?? (unknown)         
    358357            break;
    359358    }
     
    367366        return 0;
    368367
    369     cs_dump(buffer, length, "capmt:");
     368    cs_ddump(buffer, length, "capmt:");
    370369    cs_log("dvbapi: new program number: %04x", program_number);
    371370    //cs_debug("program_info_length: %d", program_info_length);
     
    414413    {
    415414        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];
    417416        es_info_length = ((buffer[i + 3] & 0x0F) << 8) | buffer[i + 4];
    418417
     
    481480
    482481        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        }
    485487
    486488        //cs_log("Provider ID: %04x", provid);
    487489
    488490        //grep ecm
    489 
    490491        dvbapi_get_single_ecm(demux_index, demux[demux_index].ECMpids[n].CA_System_ID,demux[demux_index].ECMpids[n].CA_PID, provid);
    491492
     
    555556    memset(&servaddr, 0, sizeof(struct sockaddr_un));
    556557    servaddr.sun_family = AF_UNIX;
    557     strcpy(servaddr.sun_path, cfg->dvbapi_socket);
     558    strcpy(servaddr.sun_path, CAMDSOCKET);
    558559    clilen = sizeof(servaddr.sun_family) + strlen(servaddr.sun_path);
    559560
    560     if ((unlink(cfg->dvbapi_socket) < 0) && (errno != ENOENT))
     561    if ((unlink(CAMDSOCKET) < 0) && (errno != ENOENT))
    561562        return 0;
    562563    if ((listenfd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
     
    579580    {
    580581        sleep(1); // check every second
    581         //cs_log("check zap");
     582        //cs_debug("dvbapi: check zap");
    582583
    583584        connfd = accept(listenfd, (struct sockaddr *)&servaddr, (socklen_t *)&clilen);
    584585
    585         if (connfd <= 0) //socket not available
     586        if (connfd <= 0) { //socket not available
     587            cs_debug("dvbapi: socket not available");
    586588            break;
     589        }
    587590
    588591        len = read(connfd, buffer, sizeof(buffer));
     
    590593        if (len < 3) {
    591594            cs_debug("Client: camd.socket: too short message received");
    592             break;
     595            continue;
    593596        }
    594597
     
    597600        if ((buffer[0] == 0x9F) && ((buffer[1] >> 7) == 0x01) && ((buffer[2] >> 7) == 0x00)) {
    598601            dvbapi_handlesockmsg(buffer, len);
     602        } else {
     603            cs_debug("dvbapi: invaild capmt");
    599604        }
    600605
     
    602607
    603608    }
     609
     610    cs_log("dvbapi: check_zap() aborted");
    604611    return 0;
    605612}
     
    675682                    break;
    676683
    677                 if (s1.type==0) {
    678                    
     684                if (s1.type==0) {                   
    679685                    //ECM
    680686                   
     
    697703                                er->srvid = demux[s1.index].program_number;
    698704                                er->caid  = demux[s1.index].ca_system_id;
    699                                 //er->prid  = demux[s1.index].provider_id;
     705                                er->prid  = demux[s1.index].provider_id;
    700706
    701707                                er->l=len;
     
    707713                    }
    708714                }
    709                 if (s1.type==1) {
    710                    
     715                if (s1.type==1) {                   
    711716                    //EMM
    712717
     
    733738                    memcpy(epg.hexserial, reader[client[cs_idx].au].hexserial, 8);
    734739
    735                     //do_emm(&epg);
     740                    do_emm(&epg);
    736741
    737742                }
     
    750755    pthread_t p1, p2;
    751756
    752     if (cfg->dvbapi_socket[0]==0)
    753         strncpy(cfg->dvbapi_socket, CAMDSOCKET, sizeof(cfg->dvbapi_socket)-1);
    754 
    755757    if (cfg->dvbapi_usr[0]==0) {
    756758        //
    757759    }
     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);
    758766
    759767    for (i=0;i<MAX_DEMUX;i++)
     
    784792    pthread_create (&p2, NULL, thread_check_demux, NULL);
    785793
     794    struct timeb tp;
     795    cs_ftime(&tp);
     796    tp.time+=500;
    786797
    787798    while (1) {
     
    796807        if (pfd2[0].revents & (POLLIN | POLLPRI)) {
    797808            chk_dcw(fd_m2c);
     809            chk_pending(tp);
    798810        }
    799811
     
    807819    unsigned char cw_0[8], cw_1[8];
    808820
    809     //cs_debug("dvbapi: ECM rc: %d", er->rc);
     821    cs_debug("dvbapi: ECM rc: %d", er->rc);
    810822
    811823    memcpy(cw_0, er->cw, 8);
     
    816828    int demux_index=dvbapi_get_index_by_prgnr(er->srvid);
    817829    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) {
    819831            dvbapi_start_descramble(demux_index, er->caid, er->pid, er->prid);
    820832        }
     
    823835    }
    824836
    825     if (er->rc!=0)
     837    if (er->rc>3) {
     838        cs_debug("dvbapi: cw not found");
    826839        return;
     840    }
    827841
    828842    ca_descr_t ca_descr;
     
    841855        memcpy(demux[demux_index].lastcw0,cw_0,8);
    842856        memcpy(ca_descr.cw,cw_0,8);
     857        cs_debug("dvbapi: write cw1");
    843858        if (ioctl(demux[demux_index].ca_fd, CA_SET_DESCR, &ca_descr) < 0) cs_debug("dvbapi: Error CA_SET_DESCR");
    844859    }
     
    850865        memcpy(demux[demux_index].lastcw1,cw_1,8);
    851866        memcpy(ca_descr.cw,cw_1,8);
     867        cs_debug("dvbapi: write cw2");
    852868        if (ioctl(demux[demux_index].ca_fd, CA_SET_DESCR, &ca_descr) < 0) cs_debug("dvbapi: Error CA_SET_DESCR");
    853869    }
  • branches/monitor-improvement/oscam-config.c

    r1078 r1081  
    558558    if (!strcmp(token, "enabled"))  { cfg->dvbapi_enabled=atoi(value); return; }
    559559    if (!strcmp(token, "au"))       { cfg->dvbapi_au=atoi(value); return; }
    560     if (!strcmp(token, "socket"))   { strncpy(cfg->dvbapi_socket, value, sizeof(cfg->dvbapi_socket)-1); return; }
     560    if (!strcmp(token, "boxtype"))  { strncpy(cfg->dvbapi_boxtype, value, sizeof(cfg->dvbapi_boxtype)-1); return; }
    561561    if (!strcmp(token, "user"))     { strncpy(cfg->dvbapi_usr, value, sizeof(cfg->dvbapi_usr)-1); return; }
    562562
     
    10261026        fprintf(f,"enabled             = %d\n", cfg->dvbapi_enabled);
    10271027        fprintf(f,"au                  = %d\n", cfg->dvbapi_au);
    1028         fprintf(f,"socket              = %s\n", cfg->dvbapi_socket);
     1028        fprintf(f,"boxtype             = %s\n", cfg->dvbapi_boxtype);
    10291029        fprintf(f,"user                = %s\n", cfg->dvbapi_usr);
    10301030        fprintf(f,"\n");
  • branches/monitor-improvement/oscam-http.c

    r1066 r1081  
    367367    if (cfg->dvbapi_enabled > 0) tpl_addVar(vars, 0, "ENABLEDCHECKED", "checked");
    368368    if (cfg->dvbapi_au > 0) tpl_addVar(vars, 0, "AUCHECKED", "checked");
    369     tpl_addVar(vars, 0, "SOCKET", cfg->dvbapi_socket);
     369    tpl_addVar(vars, 0, "BOXTYPE", cfg->dvbapi_boxtype);
    370370    tpl_addVar(vars, 0, "USER", cfg->dvbapi_usr);
    371371
  • branches/monitor-improvement/oscam-http.h

    r1079 r1081  
    646646        <TR><TD>Enabled:</TD><TD><input name=\"enabled\" type=\"checkbox\" value=\"1\" ##ENABLEDCHECKED##>\n\
    647647        <TR><TD>AU:</TD><TD><input name=\"au\" type=\"checkbox\" value=\"1\" ##AUCHECKED##>\n\
    648         <TR><TD>Socket:</TD><TD><input name=\"socket\" type=\"text\" size=\"50\" maxlength=\"50\" value=\"##SOCKET##\"></TD></TR>\n\
     648        <TR><TD>Boxtype:</TD><TD><input name=\"boxtype\" type=\"text\" size=\"50\" maxlength=\"50\" value=\"##BOXTYPE##\"></TD></TR>\n\
    649649        <TR><TD>User:</TD><TD><input name=\"user\" type=\"text\" size=\"20\" maxlength=\"20\" value=\"##USER##\"></TD></TR>\n\
    650650    <TR><TD colspan=\"2\" align=\"right\"><input type=\"submit\" value=\"OK\">\n</TD></TR>\n\
Note: See TracChangeset for help on using the changeset viewer.