add ability to choose "Multiple service support (auto/no/yes)" in Ci Setup
[vuplus_dvbapp] / lib / dvb_ci / dvbci_ui.h
1 #ifndef __dvbci_ui_h
2 #define __dvbci_ui_h
3
4 #include <string>
5                 /* avoid warnigs :) */
6 #undef _POSIX_C_SOURCE
7 #define _POSIX_C_SOURCE 200112L
8 #include <Python.h>
9 #include <lib/python/connections.h>
10
11 #define MAX_SLOTS 4
12
13 struct slot_ui_data
14 {
15         std::string appName;
16         int state;
17         PyObject *mmiScreen;
18         int mmiTuplePos;
19         int mmiScreenReady;
20 };
21
22 class eDVBCI_UI
23 {
24         static eDVBCI_UI *instance;
25         slot_ui_data slotdata[MAX_SLOTS];
26 #ifdef SWIG
27         eDVBCI_UI();
28         ~eDVBCI_UI();
29 #endif
30 public:
31         PSignal1<void,int> ciStateChanged;
32 #ifndef SWIG
33         eDVBCI_UI();
34         ~eDVBCI_UI();
35 #endif
36         static eDVBCI_UI *getInstance();
37
38         int getState(int slot);
39         void setState(int slot, int state);
40         std::string getAppName(int slot);
41         void setAppName(int slot, const char *name);
42         void setInit(int slot);
43         void setReset(int slot);
44         int startMMI(int slot);
45         int stopMMI(int slot);
46         int availableMMI(int slot);
47         int getMMIState(int slot);
48         int answerMenu(int slot, int answer);
49         int answerEnq(int slot, char *val);
50         int cancelEnq(int slot);
51
52         PyObject *getMMIScreen(int slot);
53         int mmiScreenClose(int slot, int timeout);
54         int mmiScreenEnq(int slot, int blind, int answerLen, char *text);
55         int mmiScreenBegin(int slot, int listmenu);
56         int mmiScreenAddText(int slot, int type, char *value);
57         int mmiScreenFinish(int slot);
58         void mmiSessionDestroyed(int slot);
59 };
60
61 #endif