Changeset 40535


Ignore:
Timestamp:
06/15/17 18:52:25 (6 years ago)
Author:
gost
Message:

[titan] mipsel/arm fix cec menu function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • titan/titan/cec.h

    r40511 r40535  
    44int cecon = 0;
    55int sreq = 0;
     6int actsource = 0;
    67
    78struct stimerthread* hdmiEventthread = NULL;
     
    4546{
    4647        unsigned char cmd = 0x82;
     48        char data[4];
     49       
     50        data[0] = cec_physicalAddress[0];
     51        data[1] = cec_physicalAddress[1];
     52        data[2] = '\0';
     53        sendMessage(address, cmd, data, 2);
     54}
     55
     56void stopSource(unsigned char address)
     57{
     58        unsigned char cmd = 0x9d;
    4759        char data[4];
    4860       
     
    332344                                                        if(rxmessage.data[3]== cec_physicalAddress[0] && rxmessage.data[4]== cec_physicalAddress[1])
    333345                                                        {
    334                                                                 sendSource(rxmessage.address);
     346                                                                actsource = 1;
     347                                                                //sendSource(rxmessage.address);
     348                                                                sendSource(0x0f);
    335349                                                                //sendswitch();
    336350                                                                //setFixedPhysicalAddress(getconfigint("cec_fixedAddress", NULL));
     
    339353                                                                setVolumeForward();
    340354                                                        }
     355                                                        else
     356                                                                actsource = 0;
    341357                                                        break;
    342358                                                }
    343359                                                case 0x82:
     360                                                case 0x86: /* Set Stream Path */
    344361                                                {
    345362                                                //cecon = 0;
     
    347364                                                        if(rxmessage.data[1]== cec_physicalAddress[0] && rxmessage.data[2]== cec_physicalAddress[1])
    348365                                                        {
    349                                                                 //sendswitch();
    350                                                                 //setFixedPhysicalAddress(getconfigint("cec_fixedAddress", NULL));
    351                                                                 //reportPhysicalAddress(0);
    352                                                                 //sendMenuInfo(0x00);
    353                                                                 //setVolumeForward();
    354                                                         }
    355                                                         else if(rxmessage.data[1]== 0x00 && rxmessage.data[2]== 0x00 && sreq == 1)
    356                                                         {
    357                                                                 sendSource(rxmessage.address);
    358                                                                 //sendswitch();
     366                                                                actsource = 1;
    359367                                                                //setFixedPhysicalAddress(getconfigint("cec_fixedAddress", NULL));
    360368                                                                //reportPhysicalAddress(0);
    361369                                                                sendMenuInfo(0x00);
    362370                                                                setVolumeForward();
    363                                                                 sreq = 0;
     371                                                        }
     372                                                        else
     373                                                        {
     374                                                                actsource = 0;
    364375                                                        }
    365376                                                        break;
     
    398409                                                case 0x85: /* request active source */
    399410                                                {
    400                                                         sreq = 1;
    401                                                         sendSource(rxmessage.address);
     411                                                        if(actsource == 1)
     412                                                        {
     413                                                                sreq = 1;
     414                                                                //sendSource(rxmessage.address);
     415                                                                sendSource(0x0f);
     416                                                        }
    402417                                                        break;
    403418                                                }
     
    461476        if (status.hdmiFd >= 0)
    462477        {
     478                usleep(200000);
    463479                printf("HdmiCEC: send message\n");
    464480                printf("%02x ", message->address);
     
    472488                message->flag = 1;
    473489                ret = ioctl(status.hdmiFd, 3, message);
     490                if(ret == -1)
     491                {
     492                        usleep(500000);
     493                        ret = ioctl(status.hdmiFd, 3, message);
     494                }       
     495                if(ret == -1)
     496                {
     497                        usleep(500000);
     498                        ret = ioctl(status.hdmiFd, 3, message);
     499                }       
    474500                if(ret == 0)
    475501                        ret = 1 + message->length;
     
    480506        }
    481507        free(message); message=NULL;
    482         usleep(100000);
    483508        m_unlock(&status.cecmutex, 26);
    484509}
     
    804829       
    805830        sreq = 0;
     831        actsource = 0;
    806832       
    807833        if(getconfigint("cec_on", NULL) == 0)
     
    878904        if(getconfigint("cec_on", NULL) == 1 && cecon == 0)
    879905        {
     906                setFixedPhysicalAddress(getconfigint("cec_fixedAddress", NULL));
     907               
    880908                if(getconfigint("cec_all_on", NULL) == 1)
    881909                {
    882910                        address = 0x0f;
    883911                        sendMessage(address, cmd, data, 0);
    884                         //sleep(1);
    885912                }
    886913                if(getconfigint("cec_rec_on", NULL) == 1)
     
    888915                        address = 0x05;
    889916                        sendMessage(address, cmd, data, 0);
    890                         //sleep(1);
    891917                }
    892918                if(getconfigint("cec_tv_on", NULL) == 1)
     
    894920                        address = 0x00;
    895921                        sendMessage(address, cmd, data, 0);
    896                         //sleep(1);
    897922                }
    898923                if(getconfigint("cec_tv_switch", NULL) == 1)
     
    904929                        data[2] = '\0';
    905930                        sendMessage(address, cmd, data, 2);
    906                         //sleep(1);
    907                 }
     931                        actsource = 1;
     932                }
     933                sendMenuInfo(0x00);
     934                setVolumeForward();
    908935                cecon = 1;
    909936                printf("**********wakeup\n");   
    910937        }
    911938        if(cecon < 2)
    912         {
    913                 //setFixedPhysicalAddress(getconfigint("cec_fixedAddress", NULL));
    914                 //setVolumeForward();
    915                 //sendMenuInfo(0x00);
    916939                cecon = 2;
    917         }
    918940}
    919941
Note: See TracChangeset for help on using the changeset viewer.