DSMCC  17.9.0
 All Data Structures Files Functions Typedefs
clDsmSystem.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org)
3  * Copyright © 2004 Ocean Blue Software Ltd
4  * Copyright © 2001 Koninklijke Philips Electronics N.V
5  *
6  * This file is part of a DTVKit Software Component
7  * You are permitted to copy, modify or distribute this file subject to the terms
8  * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org
9  *
10  * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
11  * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
12  * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
13  *
14  * If you or your organisation is not a member of DTVKit then you have access
15  * to this source code outside of the terms of the licence agreement
16  * and you are expected to delete this and any associated files immediately.
17  * Further information on DTVKit, membership and terms can be found at www.dtvkit.org
18  *******************************************************************************/
25 #ifndef _CLDSMSYSTEM_H_
26 #define _CLDSMSYSTEM_H_
27 
28 
29 /*---includes for this file--------------------------------------------------*/
30 
31 #include "cldsmcc.h"
32 #include "clDsmMemMgrAPI.h"
33 #include "dsmDbg.h"
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 
40 /*---Constant and macro definitions for public use---------------------------*/
41 
42 /* -- Turn off all static declarations in debug mode to enable
43  -- glowcode profiler to detect them */
44 #if (!defined(NDEBUG) && defined(DSM_PROFILING_BUILD))
45 #define static
46 #endif
47 
48 /* -- Context defines */
49 #ifndef DSM_NO_MEM_CONTEXT
50 #define MEM_CONTEXT idp->memContext
51 #endif
52 
53 
54 /* -- General purpose defines */
55 
56 #define BIT0_MSK 0x01
57 #define BIT1_MSK 0x02
58 #define BIT2_MSK 0x04
59 #define BIT3_MSK 0x08
60 #define BIT4_MSK 0x10
61 #define BIT5_MSK 0x20
62 #define BIT6_MSK 0x40
63 #define BIT7_MSK 0x80
64 
65 #define BIT8_MSK 0x0100
66 #define BIT9_MSK 0x0200
67 #define BIT10_MSK 0x0400
68 #define BIT11_MSK 0x0800
69 #define BIT12_MSK 0x1000
70 #define BIT13_MSK 0x2000
71 #define BIT14_MSK 0x4000
72 #define BIT15_MSK 0x8000
73 
74 #define LSB1_MSK 0x01
75 #define LSB2_MSK 0x03
76 #define LSB3_MSK 0x07
77 #define LSB4_MSK 0x0F
78 #define LSB5_MSK 0x1F
79 #define LSB6_MSK 0x3F
80 #define LSB7_MSK 0x7F
81 #define LSB8_MSK 0xFF
82 
83 #define LSB9_MSK 0x01FF
84 #define LSB10_MSK 0x03FF
85 #define LSB11_MSK 0x07FF
86 #define LSB12_MSK 0x0FFF
87 #define LSB13_MSK 0x1FFF
88 #define LSB14_MSK 0x3FFF
89 #define LSB15_MSK 0x7FFF
90 #define LSB16_MSK 0xFFFF
91 
92 #define MOD2_MSK LSB1_MSK
93 #define MOD4_MSK LSB2_MSK
94 #define MOD8_MSK LSB3_MSK
95 #define MOD16_MSK LSB4_MSK
96 #define MOD32_MSK LSB5_MSK
97 #define MOD64_MSK LSB6_MSK
98 #define MOD128_MSK LSB7_MSK
99 
100 
101 
102 /* -- DSMCC DEFINES */
103 
104 /* NB. All offsets assume that variable length fields are zero length */
105 
106 /* -- DSMCC section header defines */
107 #define DSIDII_ID 0x3B
108 #define DDB_ID 0x3C
109 #define STREAM_DESCR_ID 0x3D
110 
111 #define SECTION_HDR_LEN 8
112 #define MIN_SECTION_LEN 9
113 #define MAX_SECTION_LEN 4093
114 
115 #define MAX_DDB_BLOCKSIZE 4066
116 
117 /* -- DSMCC Message Header (dsmccMessageHeader) defines */
118 #define DSMCC_MSG_HDR_LEN 12
119 
120 /* -- DSI Message defines */
121 #define DSI_HDR_LEN 24
122 #define MIN_SRG_INFO_LEN (IOR_HDR_LEN + \
123  PROFILE_TAG_BIOP_HDR_LEN + \
124  MIN_PROFILE_TAG_BIOP_DATA_LEN)
125 #define MIN_DSI_MSG_BODY_LEN (DSI_HDR_LEN + \
126  MIN_SRG_INFO_LEN)
127 #define MIN_DSI_MSG_LEN (DSMCC_MSG_HDR_LEN + DSI_HDR_LEN)
128 
129 /* -- DII Message defines */
130 
131 #define MIN_DII_MSG_BODY_LEN 20
132 #define MIN_DII_MSG_LEN (DSMCC_MSG_HDR_LEN + \
133  MIN_DII_MSG_BODY_LEN)
134 
135 /* -- DDB message defines */
136 #define DSMCC_DOWNLOAD_HDR_LEN 12
137 #define DDB_MSG_PAYLOAD_HDR_LEN 6
138 #define MIN_DDB_PAYLOAD_DATA_LEN 0
139 #define MIN_DDB_MSG_BODY_LEN (DDB_MSG_PAYLOAD_HDR_LEN + \
140  MIN_DDB_PAYLOAD_DATA_LEN)
141 #define MIN_DDB_MSG_LEN (DSMCC_DOWNLOAD_HDR_LEN + \
142  MIN_DDB_MSG_BODY_LEN)
143 #define MAX_DDB_BLOCKSIZE 4066
144 
145 /* DSMCC Masks */
146 #define TRANSACTION_ID_UPDATED_MASK 0x00000001
147 #define TRANSACTION_ID_IDENT_MASK 0x0000fffe
148 #define TRANSACTION_ID_VERSION_MASK 0x3fff0000
149 #define TRANSACTION_ID_ORIG_MASK 0xc0000000
150 
151 /* DSM-CC Object header defines */
152 #define OBJECT_NUMBYTES_TO_MESSAGE_START 12
153 #define BIOP_MAGIC 0x42494F50
154 
155 /* DSMCC Profile Tags */
156 #define TAG_LITE_OPTIONS 0x49534f05
157 #define TAG_BIOP 0x49534f06
158 #define TAG_CONN_BINDER 0x49534f40
159 #define TAG_SERVICE_LOCATION 0x49534f46
160 #define TAG_OBJECT_LOCATION 0x49534f50
161 
162 /* IOP::IOR defines */
163 #define IOR_HDR_LEN 12
164 
165 /* BIOP::ProfileBody defines */
166 #define PROFILE_TAG_BIOP_HDR_LEN 10
167 #define MIN_PROFILE_TAG_BIOP_DATA_LEN (MIN_OBJ_LOCATION_LEN + \
168  MIN_CONN_BINDER_LEN)
169 
170 /* BIOP::ProfileBody - LiteOptionComponent defines */
171 #define MIN_OBJ_LOCATION_LEN 15
172 #define MIN_OBJLOC_COMPONENT_DATA_LEN (MIN_OBJ_LOCATION_LEN - 5)
173 #define MIN_CONN_BINDER_LEN 23
174 #define MIN_CONBIND_COMPONENT_DATA_LEN (MIN_CONN_BINDER_LEN - 5)
175 
176 
177 /* Tap use constants */
178 #define UNKNOWN_USE ((U16BIT) 0)
179 #define MPEG_TS_UP_USE ((U16BIT) 1) /* MPEG transport upstream from Client */
180 #define MPEG_TS_DOWN_USE ((U16BIT) 2) /* MPEG transport downstream to Client */
181 #define MPEG_ES_UP_USE ((U16BIT) 3) /* MPEG elementary upstream from Client */
182 #define MPEG_ES_DOWN_USE ((U16BIT) 4) /* MPEG elementary downstream to Client */
183 #define DOWNLOAD_CTRL_USE ((U16BIT) 5) /* control request/response */
184 #define DOWNLOAD_CTRL_UP_USE ((U16BIT) 6) /* control request from Client */
185 #define DOWNLOAD_CTRL_DOWN_USE ((U16BIT) 7) /* control response to Client */
186 #define DOWNLOAD_DATA_USE ((U16BIT) 8) /* data request/response */
187 #define DOWNLOAD_DATA_UP_USE ((U16BIT) 9) /* data response upstream from Client */
188 #define DOWNLOAD_DATA_DOWN_USE ((U16BIT) 10) /* data block downstream to Client */
189 #define STR_NPT_USE ((U16BIT) 11) /* NPT Descriptors */
190 #define STR_STATUS_AND_EVENT_USE ((U16BIT) 12) /* Stream Mode and Event Descriptors */
191 #define STR_EVENT_USE ((U16BIT) 13) /* Stream Event Descriptor */
192 #define STR_STATUS_USE ((U16BIT) 14) /* Stream Mode Descriptor */
193 #define RPC_USE ((U16BIT) 15) /* RPC bi-directional */
194 #define IP_USE ((U16BIT) 16) /* IP bi-directional */
195 #define SDB_CTRL_USE ((U16BIT) 17) /* control channel for Switched Digital Broadcast */
196 #define T120_TAP1 ((U16BIT) 18) /* reserved for use and definition by T.120 */
197 #define T120_TAP2 ((U16BIT) 19) /* reserved for use and definition by T.120 */
198 #define T120_TAP3 ((U16BIT) 20) /* reserved for use and definition by T.120 */
199 #define T120_TAP4 ((U16BIT) 21) /* reserved for use and definition by T.120 */
200 #define BIOP_DELIVERY_PARA_USE ((U16BIT) 22) /* Module delivery parameters */
201 #define BIOP_OBJECT_USE ((U16BIT) 23) /* BIOP objects in Modules */
202 #define BIOP_ES_USE ((U16BIT) 24) /* Elementary Stream */
203 #define BIOP_PROGRAM_USE ((U16BIT) 25) /* Program */
204 #define BIOP_DNL_CTRL_USE ((U16BIT) 26) /* Download control messages */
205 
206 /* -- objectKind and IOR typeId strings */
207 #define SRG_STR 0x73726700 /* = "srg\0" */
208 #define DIR_STR 0x64697200 /* = "dir\0" */
209 #define FIL_STR 0x66696c00 /* = "fil\0" */
210 #define STR_STR 0x73747200 /* = "str\0" */
211 #define STE_STR 0x73746500 /* = "ste\0" */
212 
213 /* DSMCC Descriptor Tag found in DII moduleInfo and DSI groupInfo */
214 #define DESCRIPTOR_TYPE_TAG ((U8BIT) 1)
215 #define DESCRIPTOR_NAME_TAG ((U8BIT) 2)
216 #define DESCRIPTOR_INFO_TAG ((U8BIT) 3)
217 #define DESCRIPTOR_MODULE_LINK_TAG ((U8BIT) 4) /* DII only */
218 #define DESCRIPTOR_CRC32_TAG ((U8BIT) 5) /* DII only */
219 #define DESCRIPTOR_LOCATION_TAG ((U8BIT) 6)
220 #define DESCRIPTOR_EST_DOWNLOAD_TIME_TAG ((U8BIT) 7)
221 #define DESCRIPTOR_GROUP_LINK_TAG ((U8BIT) 8) /* DSI only */
222 #define DESCRIPTOR_COMP_MODULE_TAG ((U8BIT) 9) /* DII only */
223 #define DESCRIPTOR_SSU_MODULE_TYPE_TAG ((U8BIT) 0x0A) /* DII only */
224 #define DESCRIPTOR_SSU_SUBGROUP_ASS_TAG ((U8BIT) 0x0B) /* DSI only */
225 #define DESCRIPTOR_MHP_LABEL ((U8BIT) 0x70) /* DII only */
226 #define DESCRIPTOR_MHP_CACHING_PRIORITY ((U8BIT) 0x71) /* DII only */
227 
228 
229 /* -- MHEG Profile specific (generally useful) defines */
230 
231 /* -- Settings for UK MHEG profile 1 = 64 + 1 for null (v1.05, sections 3.11 and 8.3.3.3) */
232 /* -- BUT Settings for MHP = 254 + 1 for null (ETSI 101 812 (7/2000) section 14.1.4) */
233 #define MAX_PATH_NAME_SIZE 255 /* -- Including null terminator */
234 
235 /* -- NB. Smallest path element length is one char + one seperator char
236  -- (eg. a/). Subtract one from MAX_PATH_NAME_SIZE for null
237  -- terminator and add one to force a round up (since there may
238  -- be no seperator char at start) */
239 #define MAX_DIRECTORY_DEPTH (((MAX_PATH_NAME_SIZE - 1) + 1) / 2)
240 
241 
242 /* -- Implementation specific defines */
243 
244 /* -- Path seperator used for internal path represention only */
245 #define PATH_SEPERATOR_CHAR '/'
246 
247 /* -- Min contiguous memory bytes at start of mem mgr block/mem area */
248 #define MIN_MEM_BLK_SIZE 256
249 
250 /* -- Restricted to keep S_ModuleBuilder within MIN_MEM_BLK_SIZE
251  -- Currently allows max broadcast (compressed) module size of 3.2MBytes */
252 #define MAX_BLOCKS_IN_MODULE 1600
253 
254 /*** TODO: CHECK THIS IS SUFFICIENT IN ALL CASES ***/
255 #define NUM_INTERNAL_MEM_SEQ_MAX 128
256 
257 /* -- Number of module acquisition (& decompress) attempts that will be
258  -- made before giving up */
259 #define MAX_MODULE_DECOMPRESS_FAILURES 3
260 
261 
262 /*
263 -- Section filter defines
264 --
265 -- NOTES:
266 -- To help detect sections supplied from old (deleted) filters, make section
267 -- filter heap bigger than max filters so memory not re-used immediately.
268 --
269 */
270 #define SECTION_FILTER_HEAP_SLACK 16
271 #define SECTION_FILTER_HEAP_SIZE (NUM_SECTION_FILTERS_MAX_DEFAULT + \
272  SECTION_FILTER_HEAP_SLACK)
273 
274 
275 /* Root Carousel (Update/Object) Linked List IDs - parent is DSM instance */
276 #define ROOT_CAROUSEL_LIST 0
277 #define NUM_LISTS_ROOT_CAROUSEL 1
278 
279 /* Data Carousel Linked List IDs - parent is Root Carousel */
280 #define OC_DATA_CAROUSEL_LIST 0
281 #define OC_DII_ACQUIRE_LIST 1
282 #define NUM_LISTS_DATA_CAROUSEL 2
283 
284 /* Lite Options Linked List IDs - parent is Object Carousel */
285 #define OC_LITE_OBJECT_LOAD_LIST 0
286 #define NUM_LITE_OBJECT_LOAD_LIST 1
287 
288 /* Module Linked List IDs - parent is Data Carousel */
289 #define DC_MODULE_LIST 0
290 #define MODULE_ACQUIRE_LIST 1
291 #define MODULE_PRIORITY_LIST 2
292 #define MODULE_LOADED_LIST 2
293 #define MODULE_DELETE_LIST 2
294 #define NUM_LISTS_MODULE 3
295 
296 /* Object Linked List IDs */
297 #define CURR_OBJECT_LIST 0
298 #define MODULE_OBJECT_LIST 1 /* -- Currently not used */
299 #define NUM_LISTS_OBJECT 2
300 
301 /* Load Request Linked List IDs */
302 #define CURR_LOAD_REQUEST_LIST 0
303 #define MODULE_LOAD_REQUEST_LIST 1
304 #define NUM_LISTS_LOAD_REQUEST 2
305 
306 /* SI Query Linked List IDs */
307 #define CURR_SI_QUERY_LIST 0
308 #define DUPLICATE_SI_QUERY_LIST 1
309 #define NUM_LISTS_SI_QUERY 2
310 
311 /*
312 -- General purpose debug check and action macro (disabled by NDEBUG)
313 --
314 -- condn = valid condition to be checked for error (eg. err == CLDSM_OK )
315 -- dbgErrActn = command(s) to execute on error condition in debug builds
316 */
317 
318 #ifdef NDEBUG
319  #define DEBUG_CHK( condn, dbgActn )
320 #else
321  #define DEBUG_CHK( condn, dbgActn ) if (!(condn)) { dbgActn; }
322 #endif
323 
324 
325 
326 /*
327 -- Macro to provide API parameter checking that can be disabled in retail
328 -- builds if required (via DSM_NO_API_PARAM_CHECK)
329 --
330 -- API parameter checking in retail builds is enabled by default (ie. if
331 -- DSM_NO_API_PARAM_CHECK is not defined).
332 --
333 -- condn = valid condition to be checked for error (eg. err == CLDSM_OK )
334 -- dbgErrActn = command(s) to execute on error condition in debug builds
335 -- relErrActn = command(s) to execute on error condition in all builds
336 -- *** NB. dbgErrActn always executed before relErrActn ***
337 --
338 */
339 #ifdef DSM_NO_API_PARAM_CHECK
340 
341 /* -- API parameter checking in debug builds only */
342 
343  #ifdef NDEBUG
344 
345  #define API_PARAM_CHK( condn, dbgErrActn, relErrActn )
346 
347  #else
348 
349  #define API_PARAM_CHK( condn, dbgErrActn, relErrActn ) \
350  if (!(condn)) { dbgErrActn; } \
351 
352  #endif
353 
354 #else
355 
356 /* -- API parameter checking in all builds (default) */
357 
358  #define API_PARAM_CHK( condn, dbgErrActn, relErrActn ) \
359  if (!(condn)) { dbgErrActn; relErrActn; } \
360 
361 #endif
362 
363 
364 
365 /*
366 -- These macro definitions provide three 'priority' levels (0, 1, 2) of
367 -- general purpose data error checking.
368 -- The highest priority (0) is always performed and cannot be disabled, the
369 -- lower two priorities can be optionally disabled for retail mode (at compile
370 -- time).
371 --
372 -- The lower priority levels (2 or 1 & 2) can be enabled/disabled for retail
373 -- builds (via DSM_DATA_CHECK_LEVEL).
374 --
375 -- Both lower levels (1 & 2) of checking are always enabled in debug mode
376 --
377 -- The default data check level in retail builds is level 1 (ie. if
378 -- DSM_DATA_CHECK_LEVEL is not defined).
379 --
380 -- Syntax is:
381 -- L<level>_DATA_CHK( condn, dbgErrActn, relErrActn )
382 --
383 -- <lvl> = 1 - Level 1 priority checking only
384 -- <lvl> = 2 - Level 1 and level 2 checking
385 --
386 -- condn = valid condition to be checked for error (eg. err == CLDSM_OK )
387 -- dbgErrActn = command(s) to execute on error condition in debug builds
388 -- relErrActn = command(s) to execute on error condition in all builds
389 -- *** NB. dbgErrActn always executed before relErrActn ***
390 --
391 */
392 #if !defined(DSM_DATA_CHECK_LEVEL)
393  #define DSM_DATA_CHECK_LEVEL 1
394 #endif
395 
396 
397 /* -- Level 0 data checking always performed */
398 
399 #define L0_DATA_CHK( condn, dbgErrActn, relErrActn ) \
400  if (!(condn)) { dbgErrActn; relErrActn; } \
401 
402 
403 #if DSM_DATA_CHECK_LEVEL >= 1
404 
405 /* -- Level 1 data checking in all builds (default) */
406 
407  #define L1_DATA_CHK( condn, dbgErrActn, relErrActn ) \
408  if (!(condn)) { dbgErrActn; relErrActn; } \
409 
410 #else
411 
412 /* -- Level 1 data checking in debug builds only */
413 
414  #if (defined(NDEBUG) || defined(DSM_PROFILING_BUILD))
415 
416  #define L1_DATA_CHK( condn, dbgErrActn, relErrActn )
417 
418  #else
419 
420  #define L1_DATA_CHK( condn, dbgErrActn, relErrActn ) \
421  if (!(condn)) { dbgErrActn; } \
422 
423  #endif
424 
425 #endif
426 
427 
428 #if DSM_DATA_CHECK_LEVEL >= 2
429 
430 /* -- Level 2 data checking in all builds */
431 
432  #define L2_DATA_CHK( condn, dbgErrActn, relErrActn ) \
433  if (!(condn)) { dbgErrActn; relErrActn; } \
434 
435 #else
436 
437 /* -- Level 2 data checking in debug builds only (default) */
438 
439  #if (defined(NDEBUG) || defined(DSM_PROFILING_BUILD))
440 
441  #define L2_DATA_CHK( condn, dbgErrActn, relErrActn )
442 
443  #else
444 
445  #define L2_DATA_CHK( condn, dbgErrActn, relErrActn ) \
446  if (!(condn)) { dbgErrActn; } \
447 
448  #endif
449 
450 #endif
451 
452 
453 
454 /* In debug only, this macro checks for error codes returned from memory API
455  functions */
456 #ifndef NDEBUG
457 #define CHECK_MEM_ERR( func ) \
458  { \
459  E_DsmMemErr memErr; \
460  \
461  memErr = func; \
462  if (memErr != MEM_NO_ERR) { \
463  dsmDP1(("Memory error : %i \n", memErr)); \
464  dsmAssert((memErr == MEM_NO_ERR)); \
465  } \
466  }
467 
468 #else
469 #define CHECK_MEM_ERR( x ) x
470 #endif
471 
472 
473 /*---Enumerations for public use---------------------------------------------*/
474 
475 typedef enum
476 {
477  PTYP_INIT = 0x00,
478  PTYP_FIRST = 0x01,
479  PTYP_INTER = 0x02,
480  PTYP_LAST = 0x03
481 } E_PostionType;
482 
483 /*---Global type defs for public use-----------------------------------------*/
484 
485 
486 /* Object Location Types */
487 typedef struct
488 {
489  U8BIT length;
490  U8BIT data[4];
492 
493 
494 typedef struct
495 {
496  U32BIT carouselId;
497  U16BIT moduleId;
498  S_ObjectKey objectKey;
499  U32BIT uiBindingTag;
500  U8BIT dvbCarouselNSAPaddress[20];
501 #ifdef READ_COSNAMING
502  S8BIT pathName[65];
503 #endif
505 
506 
507 /* Tap Types */
508 typedef struct
509 {
510  /* use = BIOP_DELIVERY_PARA_USE */
511  U16BIT id;
512  U16BIT associationTag;
513  U32BIT transactionId;
514  U32BIT timeout;
516 
517 
518 typedef struct s_LLControl *P_LLControl;
519 typedef struct s_se_info *ps_se_info;
520 
521 typedef struct s_ObjectCarousel *P_ObjectCarousel;
522 typedef struct s_RootCarousel *P_RootCarousel;
523 typedef struct s_DataCarousel *P_DataCarousel;
524 typedef struct s_Module *P_Module;
525 typedef struct s_dsmevent *P_Event;
526 typedef struct s_SiQuery *P_SiQuery;
527 typedef struct s_RootLoadRqst *P_RootLoadRqst;
528 typedef struct s_ModuleData *P_ModuleData;
529 typedef struct s_ZlibHeap *P_ZlibHeap;
530 
531 /*
532 -- Structure type for DSM-CC Core Layer instance data
533 */
534 
535 typedef struct s_DsmCoreInstance
536 {
537  /* -- SETUP DATA (COPY) */
538  S_DsmSetup setup;
539 
540  /* -- Recursion depth counters for specific functions */
541  U32BIT pfrdoCallDepth; /* -- For preFetchRelativeDirObj() */
542  U32BIT pfdlfCallDepth; /* -- For preFetchDirLoadFinalise() */
543  U32BIT pfsdndCallDepth; /* -- For preFetchSubDirsAndNewDIIsFromLoadedDir() */
544 
545  /* -- Store for memory manager context (from memStart) */
546  void *memContext;
547 
548  /* -- Store for current service info */
549  S_DvbLocator dvbLocator;
550  BOOLEAN currentServiceSet;
551  BOOLEAN cacheFull;
552 
553  /* -- Store for SI query results */
554  BOOLEAN lastPIDResultStored;
555  U16BIT lastServiceId;
556  U16BIT lastAssociationTag;
557  U16BIT lastPID;
558 
559 #ifndef NDEBUG
560  U16BIT dbgMask;
561 #endif
562 
563  /* -- Generation counter for siQuery results and sections */
564  U_PARAM generation;
565 
566  /* -- Monitor cache memory usage */
567  U32BIT cacheMemoryUsage;
568  U32BIT cacheMaximumUsage;
569 
570  /* -- Store of number of objects currently opened by clients */
571  /* TODO: Should be stored in OC when multi-carousel supported */
572  U32BIT dsmObjectsOpen;
573 
574  /* -- Handle to section filter heap memory */
575  void *sectionFilterHeap;
576 
577  /* -- zlib heap memory (for module decompress) */
578  P_ZlibHeap pZlibHeap;
579 
580  P_RootCarousel pCurrentCarousel;
581  P_RootCarousel pBootingCarousel;
582 
583  P_LLControl llcRootCarousels;
584  P_LLControl llcModulePriority;
585  P_LLControl llcLoadedModules;
586  P_LLControl llcExpiredModules;
587  P_LLControl llcCurrLoadRequests;
588  P_LLControl llcCurrSiQueries;
589 
590  ps_se_info hSubscribedEventList;
592 
593 /*------------------------------ Exported Data -----------------------------*/
594 
595 
596 /*--------------------------- Exported Prototypes --------------------------*/
597 
598 E_DscError CDSM_UnloadAllObjects( P_DsmCoreInst instance, E_DsmRstMode mode );
599 
600 /*----------------------------------------------------------------------------*/
601 
602 #ifdef __cplusplus
603 }
604 #endif
605 #endif /* _CLDSMSYSTEM_H_ */
DSM-CC dynamic memory manager API.
Main API to DSM-CC core layer (provided functions and required callbacks).
Internal Platform dependent definitions, for debug.