mirror of
https://github.com/tuxbox-neutrino/libstb-hal.git
synced 2025-08-26 15:02:58 +02:00
67 lines
1.7 KiB
C++
67 lines
1.7 KiB
C++
#include <stdio.h>
|
|
|
|
#include "init_lib.h"
|
|
#include <fcntl.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
#include <linux/dvb/dmx.h>
|
|
|
|
#include "lirmp_input.h"
|
|
#include "pwrmngr.h"
|
|
|
|
#include "lt_debug.h"
|
|
#define lt_debug(args...) _lt_debug(TRIPLE_DEBUG_INIT, NULL, args)
|
|
#define lt_info(args...) _lt_info(TRIPLE_DEBUG_INIT, NULL, args)
|
|
|
|
static bool initialized = false;
|
|
|
|
void init_td_api()
|
|
{
|
|
if (!initialized)
|
|
lt_debug_init();
|
|
lt_info("%s begin, initialized=%d, debug=0x%02x\n", __FUNCTION__, (int)initialized, debuglevel);
|
|
if (!initialized)
|
|
{
|
|
cCpuFreqManager f;
|
|
f.SetCpuFreq(0); /* CPUFREQ == 0 is the trigger for leaving standby */
|
|
/* hack: if lircd pidfile is present, don't start input thread */
|
|
if (access("/var/run/lirc/lircd.pid", R_OK))
|
|
start_input_thread();
|
|
else
|
|
lt_info("%s: lircd pidfile present, not starting input thread\n", __func__);
|
|
|
|
/* this is a strange hack: the drivers seem to only work correctly after
|
|
* demux0 has been used once. After that, we can use demux1,2,... */
|
|
struct dmx_pes_filter_params p;
|
|
int dmx = open("/dev/dvb/adapter0/demux0", O_RDWR|O_CLOEXEC);
|
|
if (dmx < 0)
|
|
lt_info("%s: ERROR open /dev/dvb/adapter0/demux0 (%m)\n", __func__);
|
|
else
|
|
{
|
|
memset(&p, 0, sizeof(p));
|
|
p.output = DMX_OUT_DECODER;
|
|
p.input = DMX_IN_FRONTEND;
|
|
p.flags = DMX_IMMEDIATE_START;
|
|
p.pes_type = DMX_PES_VIDEO;
|
|
ioctl(dmx, DMX_SET_PES_FILTER, &p);
|
|
ioctl(dmx, DMX_STOP);
|
|
close(dmx);
|
|
}
|
|
}
|
|
initialized = true;
|
|
lt_info("%s end\n", __FUNCTION__);
|
|
}
|
|
|
|
void shutdown_td_api()
|
|
{
|
|
lt_info("%s, initialized = %d\n", __FUNCTION__, (int)initialized);
|
|
if (initialized)
|
|
stop_input_thread();
|
|
initialized = false;
|
|
}
|