many changes for better CI handling
[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
10 #define MAX_SLOTS 4
11
12 struct slot_ui_data
13 {
14         std::string appName;
15         int state;
16         PyObject *mmiScreen;
17         int mmiTuplePos;
18         int mmiScreenReady;
19 };
20
21 class eDVBCI_UI
22 {
23         static eDVBCI_UI *instance;
24         slot_ui_data slotdata[MAX_SLOTS];
25 #ifdef SWIG
26         eDVBCI_UI();
27         ~eDVBCI_UI();
28 #endif
29 public:
30 #ifndef SWIG
31         eDVBCI_UI();
32         ~eDVBCI_UI();
33 #endif
34         static eDVBCI_UI *getInstance();
35
36         int getState(int slot);
37         void setState(int slot, int state);
38         std::string getAppName(int slot);
39         void setAppName(int slot, const char *name);
40         void setInit(int slot);
41         void setReset(int slot);
42         int startMMI(int slot);
43         int stopMMI(int slot);
44         int availableMMI(int slot);
45         int getMMIState(int slot);
46
47         int answerMenu(int slot, int answer);
48         int answerEnq(int slot, char *val);
49         int cancelEnq(int slot);
50
51         PyObject *getMMIScreen(int slot);
52
53         int mmiScreenEnq(int slot, int blind, int answerLen, char *text);
54         int mmiScreenBegin(int slot, int listmenu);
55         int mmiScreenAddText(int slot, int type, char *value);
56         int mmiScreenFinish(int slot);
57 };
58
59 #endif