source: titan/titan/dvrdev.h @ 39164

Last change on this file since 39164 was 28126, checked in by obi, 10 years ago

mipsel add hybrid tuner support

File size: 1.4 KB
Line 
1#ifndef DVRDEV_H
2#define DVRDEV_H
3
4struct dvbdev* dvropen(struct dvbdev* fenode)
5{
6        int fd = -1;
7        struct dvbdev* node = dvbdev;
8
9        if(fenode == NULL) return NULL;
10               
11        while(node != NULL)
12        {
13                if(node->type == DVRDEV && node->adapter == fenode->adapter && node->devnr == fenode->devnr)
14                        break;
15                node = node->next;
16        }
17
18        if(node != NULL)
19        {
20                if((fd = open(node->dev, O_WRONLY)) < 0)
21                {
22                        debug(200, "open dvr failed %s", node->dev);
23                        node = NULL;
24                }
25                else
26                {
27                        fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK);
28                        node->fd = fd;
29                        closeonexec(fd);
30                }
31        }
32
33        return node;
34}
35
36int dvropendirect(char *dvrdev)
37{
38        int fd = -1;
39
40        if((fd = open(dvrdev, O_WRONLY)) < 0)
41        {
42                debug(200, "open dvr failed %s", dvrdev);
43        }
44
45        closeonexec(fd);
46        return fd;
47}
48
49void dvrclose(struct dvbdev* node, int fd)
50{
51        if(node != NULL)
52        {
53                close(node->fd);
54                node->fd = -1;
55        }
56        else
57                close(fd);
58}
59
60int dvrgetdev()
61{
62        int i, y, fd = -1, count = 0;
63        char *buf = NULL, *dvrdev = NULL;
64
65        dvrdev = getconfig("dvrdev", NULL);
66        if(dvrdev == NULL)
67        {
68                err("NULL detect");
69                return count;
70        }
71
72        buf = malloc(MINMALLOC);
73        if(buf == NULL)
74        {
75                err("no memory");
76                return count;
77        }
78
79        for(i = 0; i < MAXDVBADAPTER; i++)
80        {
81                for(y = 0; y < MAXDVRDEV; y++)
82                {
83                        sprintf(buf, dvrdev, i, y);
84                        fd = dvropendirect(buf);
85                        if(fd >= 0)
86                        {
87                                dvrclose(NULL, fd);
88                                count++;
89                                adddvbdev(buf, i, y, -1, DVRDEV, NULL, NULL, NULL, 0);
90                        }
91                }
92        }
93
94        free(buf);
95        return count;
96}
97
98#endif
Note: See TracBrowser for help on using the repository browser.