cvs20080628 - trunk
[gitenigma.git] / include / lib / dvb / dvbscan.h
blobc791a7dcd2b54c85b2ac4604b8e2e4954d35a010
1 #ifndef __src_lib_dvb_dvbscan_h
2 #define __src_lib_dvb_dvbscan_h
4 #include <lib/dvb/edvb.h>
6 #include <set>
8 class eDVBScanEvent: public eDVBEvent
10 public:
11 enum
13 eventScanBegin=eDVBEvent::eventUser, // -> next
14 eventScanTPadded,
15 eventScanNext, // -> tune
16 eventScanTuneBegin,
17 eventScanTuneOK, // tuneOK führt zu "getPAT"
18 eventScanTuneError, // tuneError führt zu ScanError
19 eventScanGotPAT, // -> Wait
20 eventScanGotSDT, // scanOK |= SDT
21 eventScanGotNIT, // scanOK |= NIT
22 eventScanGotONIT, // scanOK |= ONIT
23 eventScanGotBAT, // scanOK |= BAT
24 eventScanComplete,
25 eventScanError,
26 eventScanCompleted
28 eDVBScanEvent(int event): eDVBEvent(event) { }
29 eDVBScanEvent(int event, int err, eTransponder *transponder): eDVBEvent(event, err, transponder) { }
32 class eDVBScanState: public eDVBState
34 public:
35 enum serviceEvent
37 stateScanTune=eDVBState::stateUser, // tune ended mit "tuned" in switchedTransponder
38 stateScanGetPAT, // -> gotPAT:scanError (PATready)
39 stateScanWait,
40 stateScanComplete,
42 eDVBScanState(int state): eDVBState(state) { }
45 class eDVBScanController: public eDVBController, public Object
47 int flags;
49 int scanOK; // 1 SDT, 2 NIT, 4 BAT, 8 oNIT
50 int scanflags;
51 // der aktuelle gescannte transponder
52 eTransponder *transponder;
54 void PATready(int error);
55 void SDTready(int error);
56 void NITready(int error);
57 void ONITready(int error);
58 void BATready(int error);
59 void FreeCheckFinished();
61 std::list<eTransponder> knownTransponder;
62 std::list<eTransponder> changedTransponder;
63 std::list<eTransponder>::iterator current;
65 void handleSDT(const SDT *sdt);
67 void freeCheckFinished();
68 Signal0<void> freeCheckFinishedCallback;
69 public:
70 bool abort();
71 enum
73 // not compatible to xml-flags!
74 flagNetworkSearch=1,
75 flagUseBAT=2,
76 flagUseONIT=4,
77 flagClearList=16,
78 flagSkipOtherOrbitalPositions=32,
79 flagNoCircularPolarization=64,
80 flagOnlyFree=128
83 eDVBScanController(eDVB &dvb);
84 ~eDVBScanController();
86 void handleEvent(const eDVBEvent &event);
87 unsigned int getOrbitalPosition() { return knownTransponder.front().satellite.orbital_position; }
89 bool addTransponder(const eTransponder &transponder);
90 int getknownTransponderSize() { return knownTransponder.size(); }
92 void setUseONIT(int useonit);
93 void setUseBAT(int usebat);
94 void setNetworkSearch(int networksearch);
95 void setClearList(int clearlist);
96 void setSkipOtherOrbitalPositions(int skipOtherOP);
97 void setNoCircularPolarization(int nocircular);
98 void setOnlyFree(int onlyFree);
100 void start();
103 #endif