- fix Building without Nagra not possible at Nagra_Merlin https://trac.streamboard...
[oscam.git] / extapi / openxcas / openxcas_message.h
blob1a156bc56ed1b575db56316a76e9a6c48e1d15c4
1 #ifndef __OPENXCAS_MESSAGE_H__
2 #define __OPENXCAS_MESSAGE_H__
4 #ifndef FALSE
5 #define FALSE (0)
6 #endif
8 #ifndef TRUE
9 #define TRUE (!FALSE)
10 #endif
12 #define OPENXCAS_VERSION "1.5.0"
14 #define OPENXCAS_MODULE_MAX 8
15 #define OPENXCAS_MODULE_NAME_LEN 32
16 #define OPENXCAS_DAEMON_NAME_LEN 64
17 #define OPENXCAS_PATH_LEN 128
18 #define OPENXCAS_VERSION_LEN 32
20 #define OPENXCAS_SECTION_LEN 4096
22 enum eOPENXCAS_STREAM_ID {
23 OPENXCAS_STREAM_1 = 0,
24 OPENXCAS_STREAM_2,
25 OPENXCAS_STREAM_MAX,
28 enum eECMKEYTYPE {
29 ECM_KEY_UNKNOWN = 0,
30 ECM_KEY_EVEN_ODD,
31 ECM_KEY_EVEN,
32 ECM_KEY_ODD,
35 enum eOPENXCAS_COMMAND {
36 OPENXCAS_UKNOWN_MSG = 0,
38 /* OpenXCAS manager --> OpenXCAS module */
39 OPENXCAS_SELECT_CHANNEL = 100,
40 OPENXCAS_START_PMT_ECM,
41 OPENXCAS_STOP_PMT_ECM,
42 OPENXCAS_START_CAT_EMM,
43 OPENXCAS_STOP_CAT_EMM,
44 OPENXCAS_ECM_CALLBACK,
45 OPENXCAS_EMM_CALLBACK,
46 OPENXCAS_QUIT,
47 OPENXCAS_BIG_MSG_FROM_MANAGER,
48 OPENXCAS_SMALL_MSG_FROM_MANAGER,
50 /* OpenXCAS module --> OpenXCAS manager */
51 OPENXCAS_START_ECM_FILTER = 200,
52 OPENXCAS_STOP_ECM_FILTER,
53 OPENXCAS_START_EMM_FILTER,
54 OPENXCAS_STOP_EMM_FILTER,
55 OPENXCAS_SET_KEY,
56 OPENXCAS_KEY_NOT_FOUND,
57 OPENXCAS_TERMINATED,
58 OPENXCAS_BIG_MSG_FROM_MODULE,
59 OPENXCAS_SMALL_MSG_FROM_MODULE,
61 /* API v2.0 */
62 /* OpenXCAS manager --> OpenXCAS module */
63 OPENXCAS_PID_FILTER_CALLBACK = 300,
65 /* OpenXCAS module --> OpenXCAS manager */
66 OPENXCAS_START_PID_FILTER = 400,
67 OPENXCAS_STOP_PID_FILTER,
68 OPENXCAS_CREATE_CIPHER,
69 OPENXCAS_DESTROY_CIPHER,
70 OPENXCAS_SET_KEY_V2,
73 * COMMAND 1XXX : reserved for sending internal message in module
74 * example: use for smartcard
77 OPENXCAS_PRIVIATE_CMD_START = 1000,
80 /* section buf + header info */
81 #define OPENXCAS_MSG_MAX_LEN (OPENXCAS_SECTION_LEN + 36)
84 typedef void (*filter_callback)(int stream_id, unsigned int sequence, int filter_index, unsigned short pid, unsigned char *pBuf, int size);
86 typedef void (*ecmemm_callback)(int stream_id, unsigned int sequence, int cipher_index, unsigned int ca_system_id, unsigned char *pEcm, int Len, unsigned short pid);
88 typedef struct stOpenCASMessage {
89 long mtype; /* do not touch, used by message queue */
91 int stream_id;
92 unsigned int sequence;
94 int cmd;
96 int buf_len;
97 unsigned char buf[OPENXCAS_MSG_MAX_LEN];
98 } openxcas_msg_t;
100 #pragma pack(1)
102 struct stOpenXCAS_Data {
103 unsigned short ca_system_id;
104 unsigned short cipher_index;
105 unsigned short pid;
107 int filter_index;
109 int len;
110 unsigned char buf[OPENXCAS_SECTION_LEN];
113 struct stOpenXCASChannel {
114 /* If current av is transtered from satellite,
115 * latitude & polarisation is meaningful.
116 * If polarisation is (-1), channel source is unknown
117 * If polarisation is (-2), channel source is DVB-T
118 * If polarisation is (-3), channel source is DVB-C
119 * If polarisation is (-4), channel source is ATSC
120 * If polarisation is (-5), channel source is ISDB-T
121 * If polarisation is 0, then DVB-S(horizontal)
122 * If polarisation is 1, then DVB-S(vertical)
124 int polarisation;
125 short latitude;
127 unsigned long frequency;
129 unsigned short service_id;
131 unsigned short v_pid;
132 unsigned short a_pid;
133 unsigned short d_pid;
136 #pragma pack()
138 #endif