blob: 1c5db2561603c084e691ffe623162d80d4b27c21 [file] [log] [blame]
Gong Ked869dd72020-07-20 09:00:25 +08001#include <stddef.h>
2#include <stdlib.h>
3#include <string.h>
4#include <errno.h>
5#include <sys/types.h>
6#include <sys/stat.h>
7#include <unistd.h>
8#include <assert.h>
9
10#include "dvr_types.h"
11#include "dvb_utils.h"
12#include "dvr_utils.h"
13
14/**
15 * Set the demux's input source.
16 * \param dmx_idx Demux device's index.
17 * \param src The demux's input source.
18 * \retval 0 On success.
19 * \retval -1 On error.
20 */
21int dvb_set_demux_source (int dmx_idx, DVB_DemuxSource_t src)
22{
23 char node[32];
24 struct stat st;
25 int r;
26
27 snprintf(node, sizeof(node), "/sys/class/stb/demux%d_source", dmx_idx);
28
29 r = stat(node, &st);
30 if (r == -1) {
31 DVR_DEBUG(1, "cannot find \"%s\"", node);
32 } else {
33 char *val;
34
35 switch (src) {
36 case DVB_DEMUX_SOURCE_TS0:
37 val = "ts0";
38 break;
39 case DVB_DEMUX_SOURCE_TS1:
40 val = "ts1";
41 break;
42 case DVB_DEMUX_SOURCE_TS2:
43 val = "ts2";
44 break;
45 case DVB_DEMUX_SOURCE_DMA0:
46 val = "hiu";
47 break;
48 default:
49 assert(0);
50 }
51
52 r = dvr_file_echo(node, val);
53 }
54
55 return r;
56}
57