Changeset 27570


Ignore:
Timestamp:
03/17/14 15:13:06 (9 years ago)
Author:
obi
Message:

mipsel fix ci

Location:
titan/titan
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • titan/titan/ca.h

    r27536 r27570  
    160160                return 1;
    161161        }
    162 
     162       
     163#ifdef MIPSEL
     164        memcpy(tmpbuf, buf, len);
     165#else
    163166        // should we send a data last ?
    164167        if(buf != NULL)
     
    192195                flag = 1;
    193196        }
    194 
     197#endif
     198
     199        if(debug_level == 620)
     200        {
     201                int i = 0;
     202                printf("CA casend to queue (slot %d fd %d): > ", dvbnode->devnr, dvbnode->fd);
     203                for(i = 0; i < len; i++)
     204                        printf("%02x ", tmpbuf[i]);
     205                printf("\n");
     206        }
     207       
     208#ifdef MIPSEL
     209        int ret = cawrite(dvbnode, dvbnode->fd, tmpbuf, len, flag, -1);
     210        if(ret < 0 || ret != len)
     211        {
     212                err("writing data to queue, slot %d", dvbnode->devnr);
     213                return 1; //error
     214        }
     215#else
    195216        struct queue* qe = addqueue(dvbnode->devnr, tmpbuf, len, NULL, 0, flag, NULL);
    196217        free(tmpbuf); tmpbuf = NULL;
     
    200221                return 1; //error
    201222        }
     223#endif
    202224
    203225        return 0; //ready
     
    547569                                       
    548570                                        addmenulistall(&mlist, tmpstr1, NULL, 0, NULL);
    549                                         mbox = menulistbox(mlist, "cimenulist", tmpstr, NULL, NULL, 1, 0);
     571                                        mbox = menulistbox(mlist, "menulist", tmpstr, NULL, NULL, 1, 0);
    550572                                        if(mbox == NULL) //exit
    551573                                                cammistop(dvbnode, sessionnr);
     
    10721094
    10731095        for(sessionnr = 1; sessionnr < MAXCASESSION; ++sessionnr)
    1074         {
     1096        {
    10751097                if(casession[sessionnr].inuse > 0)
    10761098                {
     
    14841506                                cawrite(dvbnode, dvbnode->fd, sendbuf, 5, 0, -1);
    14851507                        }
     1508                        break;
     1509                }
     1510                case 0x13: //MIPSEL
     1511                {
     1512                        debug(620, "got mipsel session data (slot %d, conn %d)", dvbnode->devnr, canode->connid);
     1513                        casessionreceive(dvbnode, buf, asnlen);
     1514                        casessionpoll(dvbnode);
    14861515                        break;
    14871516                }
     
    15591588                        {
    15601589                                //debug(620, "read, slot %d, ret %d", dvbnode->devnr, ret);
     1590#ifdef MIPSEL
     1591                                canode->poll = 1;
     1592                                canode->connid = dvbnode->devnr + 1;
     1593                                processtpdu(dvbnode, 0x13, buf, len);
     1594#else
    15611595                                tmpbuf = buf;
    15621596                                int buflen = len - 2;
     
    15871621                                        tmpbuf += asnlen;
    15881622                                        buflen -= asnlen;
    1589 
    1590                                 }
     1623                                }
     1624#endif
    15911625                        }
    15921626                        else if(ret == 1 && canode->poll == 1) //write
    15931627                        {
     1628#ifdef MIPSEL
     1629                                int count = 0;
    15941630                                struct queue* qe = getqueue(dvbnode->devnr);
    15951631                                if(qe != NULL)
    15961632                                {
     1633                                        while(qe != NULL && count < 10)
     1634                                        {
     1635                                                //debug(620, "write (queue), slot %d, ret %d", dvbnode->devnr, ret);
     1636                                               
     1637                                                int writeret = cawrite(dvbnode, dvbnode->fd, qe->data, qe->len, qe->flag, -1);
     1638                                                if(writeret >= 0 && writeret == qe->len)
     1639                                                {
     1640                                                        delqueue(qe, 0);
     1641                                                        qe = getqueue(dvbnode->devnr);
     1642                                                }
     1643                                                else
     1644                                                        count++;
     1645                                        }
     1646                                }
     1647                                else
     1648                                {
     1649                                        //debug(620, "write (poll), slot %d, ret %d", dvbnode->devnr, ret);
     1650                                        casend(dvbnode, NULL, 0);
     1651                                        if(canode->fastrun > 0) canode->fastrun--;
     1652                                }
     1653#else                   
     1654                                struct queue* qe = getqueue(dvbnode->devnr);
     1655                                if(qe != NULL)
     1656                                {
    15971657                                        //debug(620, "write (queue), slot %d, ret %d", dvbnode->devnr, ret);
     1658                                       
    15981659                                        int writeret = cawrite(dvbnode, dvbnode->fd, qe->data, qe->len, qe->flag, -1);
    15991660                                        if(writeret >= 0 && writeret == qe->len)
     
    16081669                                        if(canode->fastrun > 0) canode->fastrun--;
    16091670                                }
     1671#endif
    16101672                        }
    16111673                        else if(ret == 1 && canode->poll == 0)
  • titan/titan/mipselport.h

    r27465 r27570  
    982982       
    983983        fds.fd = node->fd;
    984         fds.events = POLLPRI | POLLIN;
     984        fds.events = POLLOUT | POLLPRI | POLLIN;
    985985       
    986986        info->flags = 0;
    987987       
    988         ret = TEMP_FAILURE_RETRY(poll(&fds, 1, 300));
     988        ret = TEMP_FAILURE_RETRY(poll(&fds, 1, 1000));
    989989       
    990990        if(ret < 0)
     
    997997        else if(ret > 0)
    998998        {
     999                if(fds.revents & POLLOUT)
     1000                        info->flags = CA_CI_MODULE_READY;
    9991001                if(fds.revents & POLLIN)
     1002                        info->flags = CA_CI_MODULE_READY;
     1003                if(fds.revents & POLLPRI)
    10001004                        info->flags = 0;
    1001                 if(fds.revents & POLLPRI)
    1002                         info->flags = CA_CI_MODULE_READY;
    10031005        }
    10041006
Note: See TracChangeset for help on using the changeset viewer.