-
Notifications
You must be signed in to change notification settings - Fork 0
/
tune.cpp
69 lines (45 loc) · 1.39 KB
/
tune.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "tune.h"
//#include "mute.h"
#include <QDebug>
#include <QProcess>
uint32_t g_last_tuned_freq_dab;
Tune::Tune(QObject *parent) : QObject(parent)
{
}
int Tune::set_dab_freq(int fd, uint32_t frequency)
{
struct dab_frequency dabf;
memset(&dabf, 0x0, sizeof(struct dab_frequency));
dabf.frequency = frequency;
net_ioctl(fd, DAB_SET_FREQUENCY, &dabf);
return 0;
}
int Tune::set_dab_channel(uint32_t frequency, uint32_t sid)
{
emit dab_hide_unhide(true);
fd = net_open(strdup("/dev/dab0"), O_RDWR);
QString freq_as_string = QString::number(frequency);
if(g_last_tuned_freq_dab != frequency){ //tune to dab freq first if not done yet
g_last_tuned_freq_dab = frequency;
QProcess::execute("/opt/bin/mediaclient -m DAB -f " + freq_as_string);
}
struct dab_frequency dabf;
memset(&dabf, 0x0, sizeof(struct dab_frequency));
dabf.frequency = frequency;
dabf.sid = sid;
net_ioctl(fd, DAB_SET_FREQUENCY, &dabf);
return 0;
}
int Tune::set_radio_channel(uint32_t frequency)
{
emit dab_hide_unhide(false);
fd = net_open(strdup("/dev/radio0"), O_RDWR);
uint32_t tuner = 0;
struct v4l2_frequency freq;
memset(&freq, 0x0, sizeof(struct v4l2_frequency));
freq.frequency = frequency/1000*16;
freq.type = V4L2_TUNER_RADIO;
freq.tuner = tuner;
net_ioctl(fd, VIDIOC_S_FREQUENCY, &freq);
return 0;
}