DSMCC  15.3.1
source/dscore/src/objectCarousel.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002  * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org)
00003  * Copyright © 2004 Ocean Blue Software Ltd
00004  * Copyright © 2001 Koninklijke Philips Electronics N.V
00005  *
00006  * This file is part of a DTVKit Software Component
00007  * You are permitted to copy, modify or distribute this file subject to the terms
00008  * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org
00009  * 
00010  * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
00011  * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
00012  * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
00013  * 
00014  * If you or your organisation is not a member of DTVKit then you have access
00015  * to this source code outside of the terms of the licence agreement
00016  * and you are expected to delete this and any associated files immediately.
00017  * Further information on DTVKit, membership and terms can be found at www.dtvkit.org
00018  *******************************************************************************/
00025 #ifndef _OBJECTCAROUSEL_H_
00026 #define _OBJECTCAROUSEL_H_
00027 
00028 
00029 /*--------------------------------  Includes  --------------------------------*/
00030 #include "clDsmSystem.h"
00031 
00032 #include "linkList.h"
00033 #include "sectionFilter.h"
00034 #include "object.h"
00035 
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039 
00040 
00041 /*-----------------------------  Exported Macros  ----------------------------*/
00042 
00043 #define OC_MAGIC            0x27BEC2A5
00044 #define INVALID_DSI_TRANSACTION_ID 0xFFFFFFFF
00045 
00046 
00047 /*------------------------------  Exported Types  ----------------------------*/
00048 
00049 typedef enum {
00050     OCS_INITIAL,
00051     OCS_PENDING_BOOTINFO,   /* -- waiting on SI Query for boot info */
00052     OCS_BOOTING,            /* -- DSI requested */
00053     OCS_BOOTED,             /* -- DSI (SRG info) acquired, SRG requested */
00054     OCS_LOADED,             /* -- SRG loaded */
00055     OCS_LOAD_FAILED         /* -- failed to boot or load */
00056 } OcStatus_t;
00057 
00058 
00059 typedef struct FileGroupList_s *pFileGroupList_t;
00060 
00061 typedef struct s_ObjectCarousel
00062 {
00063     S_LLObject              llData[NUM_LISTS_OBJECT_CAROUSEL];
00064 
00065     U32BIT                  magic;
00066 
00067     U32BIT                  carouselId;
00068     U32BIT                  dsiTransactionId;
00069     U16BIT                  service_id;
00070 
00071     /* -- DSI filter info */
00072     U16BIT                  dsiAssocTag;
00073     pSectionFilterInfo_t    pDsiSf;
00074 
00075     OcStatus_t              ocStatus;
00076     MemHandle               hPendingSiQueryRef; /* -- Only used initially */
00077 
00078     MemHandle               hLoadRequest;
00079 
00080     DeliveryParaTap_t       srgTap;
00081     ObjectLocation_t        srgObjLoc;
00082     pFileGroupList_t        pFileGroupList;
00083 
00084     MemHandle               hSrgDataCarousel;
00085     MemHandle               hSrgModule;
00086 
00087     U32BIT                  srgObjectOffset;
00088     ObjectDataInfo_t        srgObjectInfo;
00089     BOOLEAN                 srgObjectLoaded;
00090 
00091     BOOLEAN                 bOCLiteOptionsObjectProcessing;
00092     U16BIT                  loadedObjectCount;
00093 
00094     P_LLControl             llcOcDataCarousels;
00095     P_LLControl             llcOcDiiAcquires;
00096     P_LLControl             llcOcModuleAcquires;
00097     P_LLControl             llcOcPostponedLiteObjectLoads;
00098 } ObjectCarousel_t;
00099 
00100 
00101 /*------------------------------  Exported Data  -----------------------------*/
00102 
00103 
00104 /*---------------------------  Exported Prototypes  --------------------------*/
00105 
00106 clDsmErr_t ocCreate( pclDsmInstData_t idp,
00107                     U32BIT carouselId, pObjectCarousel_t *ppObjectCarousel );
00108 
00109 void       ocDestroy( pclDsmInstData_t idp,
00110                     pObjectCarousel_t *ppObjectCarousel );
00111 
00112 clDsmErr_t ocDiiAcquireStart( pclDsmInstData_t idp,
00113                 pObjectCarousel_t pOC, MemHandle hDC, clDsmSFPriority_t sfPriority );
00114 
00115 void ocDiiAcquireStop( pclDsmInstData_t idp,
00116                     pObjectCarousel_t pOC, MemHandle hDataCarousel );
00117 
00118 clDsmErr_t ocModuleAcquireStart( pclDsmInstData_t idp,
00119                 pObjectCarousel_t pOC, MemHandle hModule, clDsmSFPriority_t sfPriority );
00120 
00121 void ocModuleAcquireStop( pclDsmInstData_t idp, pObjectCarousel_t pOC, MemHandle hModule );
00122 
00123 pObjectCarousel_t ocListFindById( P_LLControl plcObjectCarousel, U16BIT service_id, U32BIT carouselId );
00124 
00125 BOOLEAN ocListFind( P_LLControl pllcObjectCarousel, MemHandle hObjectCarousel );
00126 
00127 clDsmErr_t ocUpdateSrgUserInfo( pclDsmInstData_t idp, pObjectCarousel_t pOC,
00128                                 U8BIT* pSrgData, U16BIT usrInfoLen );
00129 
00130 clDsmErr_t ocRetrieveFileGroups( pObjectCarousel_t pOC, U16BIT* total,
00131            S_CarouselInfoFileGroup **pGroups );
00132 
00133 void ocReleaseFileGroups( pclDsmInstData_t idp, pObjectCarousel_t pOC, S_CarouselInfoFileGroup *groups );
00134 
00135 /*----------------------------------------------------------------------------*/
00136 
00137 #ifdef __cplusplus
00138 }
00139 #endif
00140 #endif /* _OBJECTCAROUSEL_H_ */
00141 
 All Data Structures Files Functions Typedefs