summaryrefslogtreecommitdiff
path: root/p2pvr/devices/frontend.h
blob: d33353dbde5bc39a1edd1dc0c6614e2b3a3e7788 (plain)
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
#ifndef P2PVR_FRONTEND_H
#define P2PVR_FRONTEND_H

#include <linux/dvb/frontend.h>
#include <genLoader.h>
#include <dvb.h>

class Tuner;

class Frontend {
	public:
		typedef boost::function<bool(long)> OnFrequencyFound;
		Frontend(Tuner *, int fd, const struct dvb_frontend_info &);
		virtual ~Frontend();

		fe_status_t GetStatus() const;
		virtual void TuneTo(const DVBSI::DeliveryPtr &) const = 0;
		virtual void FrequencyScan(const OnFrequencyFound & off) const = 0;
		virtual std::string Type() const = 0;
		const struct dvb_frontend_info & Info() const;

	protected:
		const Tuner * tuner;
		const int frontendFD;
		const struct dvb_frontend_info fe_info;
};

typedef GenLoader<Frontend, fe_type, Tuner *, int, const struct dvb_frontend_info &> FrontendLoader;
typedef boost::shared_ptr<Frontend> FrontendPtr;

#endif