Changeset 18524


Ignore:
Timestamp:
11/10/12 15:51:44 (11 years ago)
Author:
nit
Message:

[titan] add timer konflikt check

Location:
titan/titan
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • titan/titan/audiodev.h

    r14321 r18524  
    325325                                audioclose(NULL, fd);
    326326                                count++;
    327                                 adddvbdev(buf, i, y, -1, AUDIODEV, NULL, NULL);
     327                                adddvbdev(buf, i, y, -1, AUDIODEV, NULL, NULL, 0);
    328328                        }
    329329                }
  • titan/titan/cidev.h

    r10810 r18524  
    8080                        {
    8181                                count++;
    82                                 adddvbdev(buf, i, y, fd, CIDEV, NULL, NULL);
     82                                adddvbdev(buf, i, y, fd, CIDEV, NULL, NULL, 0);
    8383                        }
    8484                }
  • titan/titan/dmxdev.h

    r16303 r18524  
    476476                                count++;
    477477                                for(z = 0; z < MAXDEMUXDEVOPEN; z++)
    478                                         adddvbdev(buf, i, y, -1, DEMUXDEV, NULL, NULL);
     478                                        adddvbdev(buf, i, y, -1, DEMUXDEV, NULL, NULL, 0);
    479479                                //without this, on atevio7500, if the second tuner is the maintuner
    480480                                //no picture (i don't know why)
  • titan/titan/dvbdev.h

    r16286 r18524  
    22#define DVBDEV
    33
    4 struct dvbdev* adddvbdev(char *dev, int adapter, int devnr, int fd, int type, struct dvb_frontend_info* feinfo, struct dvbdev* last)
     4//flag 0: use dvbdev
     5//flag 1: use dvbdevsim
     6struct dvbdev* adddvbdev(char *dev, int adapter, int devnr, int fd, int type, struct dvb_frontend_info* feinfo, struct dvbdev* last, int flag)
    57{
    68        debug(1000, "in");
    7         struct dvbdev *newnode = NULL, *node = dvbdev;
     9        struct dvbdev *newnode = NULL, *node = NULL;
    810        char* tmp = NULL, *tmp1 = NULL;
     11
     12        if(flag == 0)
     13                node = dvbdev;
     14        else
     15                node = dvbdevsim;
    916
    1017        newnode = (struct dvbdev*)malloc(sizeof(struct dvbdev));       
     
    7885        }
    7986        else
    80                 dvbdev = newnode;
     87        {
     88                if(flag == 0)
     89                        dvbdev = newnode;
     90                else
     91                        dvbdevsim = newnode;
     92        }
    8193
    8294        debug(1000, "out");
     
    8496}
    8597
    86 void deldvbdev(char *dev)
     98//flag 0: use dvbdev
     99//flag 1: use dvbdevsim
     100void deldvbdev(char *dev, int flag)
    87101{
    88102        debug(1000, "in");
    89         struct dvbdev *node = dvbdev, *prev = dvbdev;
     103        struct dvbdev *node = NULL, *prev = NULL;
     104
     105        if(flag == 0)
     106        {
     107                node = dvbdev;
     108                prev = dvbdev;
     109        }
     110        else
     111        {
     112                node = dvbdevsim;
     113                prev = dvbdevsim;
     114        }
    90115
    91116        while(node != NULL)
     
    93118                if(ostrcmp(node->dev, dev) == 0)
    94119                {
    95                         if(node == dvbdev)
     120                        if(flag == 0 && node == dvbdev)
    96121                                dvbdev = node->next;
     122                        else if(flag == 1 && node == dvbdevsim)
     123                                dvbdevsim = node->next;
    97124                        else
    98125                                prev->next = node->next;
     
    126153}
    127154
    128 void freedvbdev()
     155//flag 0: use dvbdev
     156//flag 1: use dvbdevsim
     157void freedvbdev(int flag)
    129158{
    130159        debug(1000, "in");
    131         struct dvbdev *node = dvbdev, *prev = dvbdev;
     160        struct dvbdev *node = NULL, *prev = NULL;
     161
     162        if(flag == 0)
     163        {
     164                node = dvbdev;
     165                prev = dvbdev;
     166        }
     167        else
     168        {
     169                node = dvbdevsim;
     170                prev = dvbdevsim;
     171        }
    132172
    133173        while(node != NULL)
     
    136176                node = node->next;
    137177                if(prev != NULL)
    138                         deldvbdev(prev->dev);
     178                        deldvbdev(prev->dev, flag);
    139179        }
    140180        debug(1000, "out");
  • titan/titan/frontenddev.h

    r18216 r18524  
    16191619                                {
    16201620                                        count++;
    1621                                         dvbnode = adddvbdev(buf, i, y, fd, FRONTENDDEV, feinfo, NULL);
     1621                                        dvbnode = adddvbdev(buf, i, y, fd, FRONTENDDEV, feinfo, NULL, 0);
    16221622                                        if(dvbnode->feinfo->type == FE_QPSK)
    16231623                                                fesetvoltage(dvbnode, SEC_VOLTAGE_OFF, 15);
     
    16561656        {
    16571657                sprintf(buf, frontenddev, 0, dvbnode->devnr);
    1658                 adddvbdev(buf, 0, dvbnode->devnr, -1, FRONTENDDEVDUMMY, NULL, NULL);
     1658                adddvbdev(buf, 0, dvbnode->devnr, -1, FRONTENDDEVDUMMY, NULL, NULL, 0);
    16591659        }
    16601660
  • titan/titan/rectimer.h

    r18456 r18524  
    7272}
    7373
     74int checkrectimerconflict(struct rectimer* recnode)
     75{
     76        struct dvbdev* dvbnode = dvbdev;
     77        struct transponder* tpnode = NULL;
     78        struct rectimer* node = rectimer;
     79
     80        while(dvbnode != NULL)
     81        {
     82                if(dvbnode->type == FRONTENDDEV)
     83                {
     84                        adddvbdev(ostrcat(dvbnode->dev, NULL, 0, 0), dvbnode->adapter, dvbnode->devnr, dvbnode->fd, FRONTENDDEV, dvbnode->feinfo, NULL, 1);
     85                }
     86                dvbnode = dvbnode->next;
     87        }
     88        dvbnode = NULL;
     89
     90        tpnode = gettransponder(recnode->transponderid);
     91        dvbnode = fegetfree(tpnode, 0, dvbdevsim);
     92        if(dvbnode != NULL)
     93                dvbnode->felock = 1;
     94
     95        while(node != NULL)
     96        {
     97                if(recnode != node && node->status < 2)
     98                {
     99                        if((recnode->begin >= node->begin && recnode->begin < node->end) || (recnode->end >= node->begin && recnode->end < node->end))
     100                        {
     101                                tpnode = gettransponder(recnode->transponderid);
     102                                dvbnode = fegetfree(tpnode, 0, dvbdevsim);
     103                                if(dvbnode == NULL)
     104                                {
     105                                        freedvbdev(1);
     106                                        dvbdevsim = NULL;
     107                                        return 2;
     108                                }
     109                                else
     110                                        dvbnode->felock = 1;
     111                        }
     112                }
     113                node = node->next;
     114        }
     115
     116        freedvbdev(1);
     117        dvbdevsim = NULL;
     118        return 0;
     119}
     120
    74121int checkrectimeradd(struct rectimer* recnode, char** ret)
    75122{
     
    107154        }
    108155
    109         while(node != NULL)
    110         {
    111                 if(recnode != node && node->status < 2)
    112                 {
    113                         if((recnode->begin >= node->begin && recnode->begin < node->end) || (recnode->end >= node->begin && recnode->end < node->end))
    114                         {
    115                                 *ret = "Timer conflicts with other timer\nWould you add the timer?";
    116                                 return 2;
    117                         }
    118                 }
    119                 node = node->next;
     156        if(checkrectimerconflict(recnode) != 0)
     157        {
     158                *ret = "Timer conflicts with other timer\nWould you add the timer?";
     159                return 2;
    120160        }
    121161
  • titan/titan/titan.c

    r18523 r18524  
    2020struct rc *rc = NULL;
    2121struct dvbdev *dvbdev = NULL;
     22struct dvbdev *dvbdevsim = NULL;
    2223struct channel *channel = NULL;
    2324struct transponder *transponder = NULL;
     
    380381                freeconfig();
    381382
    382                 freedvbdev();
     383                freedvbdev(0);
    383384
    384385                closefb(fb);
Note: See TracChangeset for help on using the changeset viewer.