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