rcconsole: fix for escape codes split into multiple reads
[enigma2.git] / lib / driver / rfmod.cpp
1 #include <lib/driver/rfmod.h>
2
3 #include <unistd.h>
4 #include <fcntl.h>
5 #include <sys/ioctl.h>
6
7 #include <lib/base/init.h>
8 #include <lib/base/init_num.h>
9 #include <lib/base/eerror.h>
10
11 #define IOCTL_SET_CHANNEL                                               0
12 #define IOCTL_SET_TESTMODE                                      1
13 #define IOCTL_SET_SOUNDENABLE                           2
14 #define IOCTL_SET_SOUNDSUBCARRIER               3
15 #define IOCTL_SET_FINETUNE                                      4
16 #define IOCTL_SET_STANDBY                                               5
17
18 eRFmod *eRFmod::instance = 0;
19
20 eRFmod::eRFmod()
21 {
22         ASSERT(!instance);
23         instance = this;
24         
25         fd = open("/dev/rfmod0", O_RDWR);
26         if (fd < 0)
27                 eDebug("couldnt open /dev/rfmod0!!!!");
28 }
29
30 eRFmod::~eRFmod()
31 {
32         if(fd > 0)
33                 close(fd);
34 }
35
36 eRFmod *eRFmod::getInstance()
37 {
38         return instance;
39 }
40
41 void eRFmod::setFunction(int val)               //0=Enable 1=Disable
42 {
43         ioctl(fd, IOCTL_SET_STANDBY, &val);
44 }
45
46 void eRFmod::setTestmode(int val)               //0=Enable 1=Disable
47 {
48         ioctl(fd, IOCTL_SET_TESTMODE, &val);
49 }
50
51 void eRFmod::setSoundFunction(int val)          //0=Enable 1=Disable
52 {
53         ioctl(fd, IOCTL_SET_SOUNDENABLE, &val);
54 }
55
56 void eRFmod::setSoundCarrier(int val)
57 {
58         ioctl(fd, IOCTL_SET_SOUNDSUBCARRIER, &val);
59 }
60
61 void eRFmod::setChannel(int val)
62 {
63         ioctl(fd, IOCTL_SET_CHANNEL, &val);
64 }
65
66 void eRFmod::setFinetune(int val)
67 {
68         ioctl(fd, IOCTL_SET_FINETUNE, &val);
69 }
70
71 //FIXME: correct "run/startlevel"
72 eAutoInitP0<eRFmod> init_rfmod(eAutoInitNumbers::rc, "UHF Modulator");