xref: /utopia/UTPA2-700.0.x/modules/dscmb/drv/nsk2/XtvTypes.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 /*****************************************************************************\
2   Copyright (C) 2004  : NDS Ltd.
3 
4   P R O P R I E T A R Y        C O N F I D E N T I A L
5 
6   The copyright of this document is vested in NDS Ltd. without whose prior
7   written permission its contents must not be published,adapted
8   or reproduced in any form or disclosed or issued to any third party.
9 
10   ===========================================================================
11   \Purpose: XTV services common types - for 3rd parties
12 
13   ===========================================================================
14   VSS file:    $Workfile: XtvTypes.h $    $Revision: 23 $
15   VSS last change:    $Author: Ozecharia $    $Date: 7/21/04 3:00p $    $Modtime: 7/21/04 2:55p $
16 
17 \*****************************************************************************/
18 
19 #ifndef _INC_XTVTYPES
20 #define _INC_XTVTYPES
21 
22 /*****************************************************************************/
23 
24 /* public, package and private functions prefix */
25 #define PUBFUNC /* public function */
26 #define PKGFUNC /* package function - no way in standard C to specify "package only" visibility during compilation */
27 #define PRVFUNC static /* private function */
28 
29 /* function in and out parameters prefix */
30 #define _in_
31 #define _out_
32 #define _in_out_
33 
34 
35 /*****************************************************************************/
36 /* basic types */
37 
38 #ifndef XNULL
39 #define XNULL ((void *)0)
40 #endif
41 
42 typedef   signed char    XCHAR;      /* Signed    8 bit quantity  */
43 typedef unsigned char    XUCHAR;     /* Unsigned  8 bit quantity  */
44 typedef   signed short   XSHORT;     /* Signed   16 bit quantity  */
45 typedef unsigned short   XUSHORT;    /* Unsigned 16 bit quantity  */
46 typedef   signed long    XLONG;      /* Signed   32 bit quantity  */
47 typedef unsigned long    XULONG;     /* Unsigned 32 bit quantity  */
48 typedef unsigned long    F_RASP_EV_MASK;
49 
50 typedef enum xbool
51 {
52     XFALSE = 0,
53     XTRUE  = 1
54 } XBOOL;
55 
56 typedef enum trigger_executor
57 {
58 		F_TRIGGER_BY_EVENT = 0,
59 		F_TRIGGER_BY_TIMER = 1,
60 } TRIGGER_EXECUTOR;
61 
62 
63 typedef XUCHAR*     XSTRING  ; /* null-terminated string */
64 
65 typedef  XULONG             XHANDLE; /* general handle */
66 
67 /* data buffer + its length */
68 typedef struct XDATA_
69 {
70     XUCHAR  *data;
71   XUSHORT length;
72 } XDATA;
73 
74 /* const data buffer + its length */
75 typedef struct XCDATA_
76 {
77     const XUCHAR  *data;
78     XUSHORT length;
79 } XCDATA;
80 
81 typedef struct
82 {
83     F_RASP_EV_MASK     		Supported_Event;
84     XULONG         				Event_Timer_Rate;
85     XUSHORT				        Num_Rasps;
86     XUSHORT        				Max_Event_Num_In_Fifo;
87     XUSHORT        				Num_of_Payload_Buffers;
88     XUSHORT        				Num_of_Filters;
89     XBOOL             		Event_Generation_Every_Slot_Time;
90     XBOOL             		PCR_Stamp;
91     XBOOL             		Local_Clock_Stamp;
92     XBOOL             		Trigger_by_Evnet;
93     XBOOL             		Trigger_by_Time ;
94 
95 }RASP_CAPS;
96 
97 typedef struct
98 {
99     XULONG        Event_Descriptor;
100     XUSHORT       Pid;
101     XUSHORT       Reserved;
102     XULONG        PacketNum;
103     XULONG        Timer;
104     XULONG        PCR;
105 
106 }RASP_EVENT;
107 
108 
109 /* time and duration */
110 typedef struct XTIME_
111 {
112     XULONG time;    /* standard ANSI time in seconds (from Jan 1970) */
113     XULONG milli;   /* where TOD clock supports it else 0            */
114 } XTIME;
115 
116 #define XTIME_NULL  {0,0} /* null value for XTIME */
117 
118 typedef XLONG       XDURATION;      /* time duration */
119 
120 #define XDURATION_NULL  (0)         /* null value for XDURATION*/
121 
122 #define XDURATION_MAX   (0x7FFFFFFF)/* maximum duration value */
123 
124 typedef unsigned short  (*RASP_EVENT_NOTIFY_FOUNCTION)
125 (
126     XULONG      		Xconn,
127     XUSHORT  				NumEvent,
128     RASP_EVENT      RaspEvents[]
129 );
130 
131 typedef unsigned short  (*RASP_OVERFLOW_NOTIFY_FUNCTION)
132 (
133     XULONG      Xconn
134 );
135 
136 
137 /* file position offset relative to */
138 typedef enum XPOSITION_OFFSET_
139 {
140     XPOSITION_OFFSET_START=0,   /* relative to file start */
141     XPOSITION_OFFSET_END,   /* relative to file end */
142     XPOSITION_OFFSET_CURRENT    /* relative to current position */
143 } XPOSITION_OFFSET;
144 
145 
146 /* playback file EOF types */
147 typedef enum XEOF_POSITION_
148 {
149     XEOF_POSITION_BEGIN= 0,             /* Playback has reached the beginning of file */
150     XEOF_POSITION_END                   /* Playback has reached the end of file */
151 } XEOF_POSITION;
152 
153 
154 /* playback stop mode */
155 typedef enum XSTOP_MODE_
156 {
157     XSTOP_MODE_DEFAULT=0,
158     XSTOP_MODE_FREEZE,
159     XSTOP_MODE_BLACK
160 } XSTOP_MODE;
161 
162 
163 /* languages data length */
164 #define XLANGUAGES_MAX_LEN  (15) /* list of languages max length */
165 
166 
167 /*****************************************************************************/
168 /* XCONNECTION */
169 
170 typedef  XULONG             XCONNECTION;
171 
172 #define XCONNECTION_INVALID     (0L) /* invalid XCONNECTION value */
173 
174 /* connection id */
175 typedef enum XCONNID_
176 {
177     XCONNID_T1_LIVE=501,    /* Live display from tuner 1 */
178     XCONNID_T2_LIVE,        /* Live display from tuner 2 */
179     XCONNID_T1_RECORD,      /* Record from tuner 1 to disk */
180     XCONNID_T2_RECORD,      /* Record from tuner 2 to disk */
181     XCONNID_PLAY1           /* Play from disk to display */
182 } XCONNID;
183 
184 
185 /*****************************************************************************/
186 /* XSTATUS - standard return status */
187 
188 typedef XUSHORT             XSTATUS;
189 
190 typedef XULONG              XLSTATUS; /* long return status */
191 
192 
193 /* general purpose XSTATUS values */
194 
195 #define XSTATUS_OK          (XSTATUS)0      /* success */
196 #define XSTATUS_ERROR       (XSTATUS)1      /* general error */
197 #define XSTATUS_PARAM_ERROR     (XSTATUS)2      /* parameter error */
198 #define XSTATUS_IN_USE          (XSTATUS)3      /* the required resources are in use */
199 #define XSTATUS_NOT_AVAILABLE   (XSTATUS)4      /* the required resources are not available */
200 #define XSTATUS_DISK_FULL       (XSTATUS)5      /* disk full */
201 #define XSTATUS_ASYNCHRONOUS    (XSTATUS)6      /* the function execution is asynchronous */
202 #define XSTATUS_TUNER_CONFLICT  (XSTATUS)7      /* tuner can not be allocated */
203 #define XSTATUS_OK_TUNER_CHANGED (XSTATUS)8     /* tuner was changed */
204 #define XSTATUS_OK_NO_RETUNE     (XSTATUS)9     /* retuning was not necessary */
205 #define XSTATUS_NOT_INITIALIZED  (XSTATUS)10        /* the data requested had not been initialized */
206 
207 #define X_OK        XSTATUS_OK
208 #define X_ERROR     XSTATUS_ERROR
209 
210 
211 /* XSTATUS warning/error creation
212   parametrs:
213     mod - Name of module, generating Warning / error
214     num - Number of error
215     txt - Error description
216 */
217 #define X_WARN_CREATE(mod,num,txt)      ((XSTATUS)(((mod & 0x7f)<< 8) | (num & 0xff)))
218 #define X_ERR_CREATE(mod,num,txt)       ((XSTATUS)(0x8000 | X_WARN_CREATE(mod,num,txt)))
219 
220 
221 /* XSTATUS warning/error and module information retriving macros */
222 #define X_IS_ERR(s)                     ((s & 0x8000) != 0)
223 #define X_IS_WARN(s)                    (!X_IS_ERR(s))
224 #define X_GET_MODULE(s)                 ((s>>8) & 0x7f)
225 
226 
227 /*****************************************************************************/
228 /* general bit set macros */
229 
230 /* Check bit at offset */
231 #define  X_IS_BIT_SET(val,off)   (((val)&(1U<<(off)))!=0)
232 
233 /* Set bit at offset */
234 #define  X_SET_BIT(val,off)     {(val)|=(1U<<(off));}
235 
236 /* Clear bit at offset */
237 #define  X_CLR_BIT(val,off)     {(val)&=~(1U<<(off));}
238 
239 
240 /*****************************************************************************/
241 /* 64 bits API
242 Poor men OO 64 bit long platform independent interface.
243 Implementation is platform dependent.
244 */
245 
246 /*  Private Implementation. Don't build on it !!! */
247 typedef struct _XI64{
248     long DontUseIt[2];
249 } XI64;
250 
251 #ifdef XBOOL64INT
252 #define XBOOL64 int
253 #else
254 #define XBOOL64 XBOOL
255 #endif
256 
257 /*  Public: Use it */
258 void    XI64Set(XI64* ptarget, XI64* porigin);
259 XBOOL64 XI64Equal(XI64* ptarget, XI64* porigin);
260 XBOOL64 XI64GE(XI64* ptarget, XI64* porigin);
261 XBOOL64 XI64Equal0(XI64* ptarget);
262 XBOOL64 XI64Negative(XI64* ptarget);
263 void    XI64SetLong(XI64* ptarget, XLONG high, XULONG low);
264 void    XI64GetLong(XI64* ptarget, XLONG* phigh, XULONG* plow);
265 void    XI64Add(XI64* presult, XI64* porigin, XI64* poffset); /* *presult = *porigin + *poffset */
266 void    XI64Sub(XI64* presult, XI64* porigin, XI64* poffset); /* *presult = *porigin - *poffset */
267 void    XI64Div(XI64* presult, XI64* porigin, XI64* poffset); /* *presult = *porigin / *poffset */
268 void    XI64Mul(XI64* presult, XI64* porigin, XI64* poffset); /* *presult = *porigin * (*poffset) */
269 void    XI64ShiftL(XI64* presult, XI64* porigin, int numBits); /* *presult = *porigin << *numBits */
270 void    XI64ShiftR(XI64* presult, XI64* porigin, int numBits); /* *presult = *porigin >> *numBits */
271 char*   XI64ToChar(XI64* ptarget);                              /* character representation, 10 based */
272 #define XI64GR(X,Y) !(XI64GE(Y,X))
273 
274 
275 #endif /* _INC_XTVTYPES */
276 
277