DSMCC
15.3.1
|
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