49 typedef struct LiteOptionObject_tag LiteOptionObject_t, *pLiteOptionObject_t;
51 struct LiteOptionObject_tag
74 static E_DscError PreFetchRelativeNonDirObj(
P_DsmCoreInst idp,
78 static E_DscError PreFetchNewDirsAndDIIsFromLoadedDir(
P_DsmCoreInst idp,
87 static E_DscError lmLiteOptionsObjectOnModuleUpdate(
P_DsmCoreInst idp, U8BIT *name,
152 pModule = DSC_ObjCrslSrgModule(pOC);
153 pLoadRequest->pDataCarousel = DSC_RootCrslFirstDataCarousel(&pOC->root);
156 DBG1(DD_LM,
"No Module on carousel %p",pOC)
158 pLoadRequest->rlr.status = LRS_STALLED_SRG_MODULE;
162 pLoadRequest->pModule = pModule;
163 if (pOC->srgObjectInfo.objectKind != SRG_STR)
165 pLoadRequest->rlr.status = LRS_STALLED_SRG_MODULE;
171 if (pModule->status == MS_CACHED)
173 pLoadRequest->pDataCarousel = LLParent(pModule, DC_MODULE_LIST);
175 err = ProgressLoadRequest( idp, pLoadRequest );
179 DBG1(DD_LM,
"Module %p, status %u",pModule,pModule->status)
190 BOOLEAN loadRequestsOnModule;
192 dsmAssert((pLoadRequest->pModule != NULL));
198 pCurrModule = pLoadRequest->pModule;
199 dsmAssert((pCurrModule->status == MS_CACHED));
200 dsmAssert((pCurrModule->hModuleData != NULL));
204 if (pLoadRequest->rlr.cachingRules < pCurrModule->cachingRules)
206 pCurrModule->cachingRules = pLoadRequest->rlr.cachingRules;
209 dsmAssert((pCurrModule->status == MS_CACHED));
210 loadRequestsOnModule = (pCurrModule->llcLoadRequests == NULL) ? FALSE : TRUE;
212 if (loadRequestsOnModule == FALSE)
216 UpdateModuleCachingNoFlush( idp, pLoadRequest );
295 *ppLoadRequest = NULL;
300 case RCS_LOAD_FAILED:
301 err = CLDSM_ERR_CAROUSEL_LOAD_FAILED;
305 dsmDP1((
"ERROR: Illegal carousel status = %u\n", pOC->root.status));
307 err = CLDSM_ERR_INTERNAL;
311 DEBUG_CHK( err == CLDSM_OK, dsmDP1((
"ERROR: lmRequestObjectLoad: %u\n", err)));
454 if (DSC_ObjCrslSrgObjectLoaded(pOC))
456 pathlen = strlen((
char *)path);
460 pLoadRequest->pObjCarousel = pOC;
462 pRemaining = (U8BIT *)(pLoadRequest + 1);
463 pLoadRequest->pRemainingPath = pRemaining;
464 memcpy(pRemaining, path, pathlen);
466 pLoadRequest->objectLocation = pOC->srgObjLoc;
467 pLoadRequest->tap = pOC->srgTap;
470 dsmAssert((DSC_ObjCrslSrgModule(pOC) != NULL));
472 pLoadRequest->pDataCarousel = DSC_RootCrslFirstDataCarousel(&pOC->root);
473 pLoadRequest->pModule = DSC_ObjCrslSrgModule(pOC);
475 err = ProgressLoadRequest( idp, pLoadRequest );
478 pModule = pLoadRequest->pModule;
479 switch (pLoadRequest->rlr.status)
484 case LRS_STALLED_MODULE:
488 if (pModule->status == MS_ACQ_FAILED)
501 dsmAssert((idp->setup.turboCaching == TRUE));
502 pModule->status = MS_PENDING_DDB;
519 case RCS_LOAD_FAILED:
520 err = CLDSM_ERR_CAROUSEL_LOAD_FAILED;
525 dsmDP1((
"ERROR: Illegal carousel status = %u\n", pOC->root.status));
527 err = CLDSM_ERR_INTERNAL;
531 DEBUG_CHK( err == CLDSM_OK, dsmDP1((
"ERROR: lmGetObjectLoadState: %u\n", err)));
532 dsmDP3((
"exit lmGetObjectLoadState -> rtn: %u\n", err));
557 dsmAssert((pOC->root.pDsiSf));
559 #ifdef DSI_TIMEOUT_SUPPORT
561 sectionTimerRemove(idp, pOC->root.pDsiSf);
564 if (pOC->root.status == RCS_BOOTING)
566 DBGLOG(DD_OC,
"DSI acquired carouselId = %u\n", pOC->root.rcid);
568 pOC->srgObjLoc = *pSrgLocn;
569 pOC->srgTap = *pSrgTap;
570 pOC->root.status = RCS_BOOTED;
572 dsmAssert((pOC->root.pLoadRqst != NULL));
577 dsmAssert((pLoadRequest->pDataCarousel == NULL));
578 dsmAssert((pLoadRequest->pModule == NULL));
580 pLoadRequest->objectLocation = *pSrgLocn;
581 pLoadRequest->tap = *pSrgTap;
582 pLoadRequest->rlr.status = LRS_STALLED_SRG_MODULE;
584 err = LoadStalledModule( idp, pLoadRequest );
587 if (err == CLDSM_ERR_LOAD_FAILED)
594 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
604 if (pLoadRequest->rlr.finalise)
612 DEBUG_CHK( err == CLDSM_OK,
613 dsmDP1((
"ERROR: lmUpdateCarouselSRGInfo: %u\n", err)));
614 dsmDP3((
"exit lmUpdateCarouselSRGInfo -> rtn: %u\n", err));
622 pLiteOptionObject_t pLiteObjFromList, pLiteObjFromListToDelete;
626 if (memValidate(pDC))
628 pOC = LLParent(pDC, OC_DATA_CAROUSEL_LIST);
634 if (memValidate(pOC) && TRUE == pOC->bOCLiteOptionsObjectProcessing)
636 pLiteObjFromListToDelete = NULL;
638 listId = LListId( pOC->llcOcPostponedLiteObjectLoads );
639 pLiteObjFromList = LLHead( pOC->llcOcPostponedLiteObjectLoads );
640 dsmDP2((
"LITE list %u => handle = %#p\n", listId, pLiteObjFromList));
642 while (pLiteObjFromList != NULL)
644 dsmDP2((
"CALL liteOptionsObjectHandle: name = %s pRequest = %#p\n",
645 pLiteObjFromList->name, pLiteObjFromList->pLoadRequest));
647 lmLiteOptionsObjectOnModuleUpdate( idp, pLiteObjFromList->name,
648 pOC, pModule, pLiteObjFromList->pLoadRequest );
650 if (LRS_LITE_OPTIONS_LOADED == pLiteObjFromList->pLoadRequest->rlr.status)
652 dsmDP2((
"LITE_OPTIONS: Finalise object loading\n"));
653 ObjectLoadFinalise(idp, pLiteObjFromList->pLoadRequest);
654 pLiteObjFromListToDelete = pLiteObjFromList;
656 pLiteObjFromList = LLNext( pLiteObjFromList, listId );
658 if (NULL != pLiteObjFromListToDelete)
660 LLRemove( pLiteObjFromListToDelete, OC_LITE_OBJECT_LOAD_LIST );
661 pLiteObjFromListToDelete = NULL;
692 LLInsertHead( idp->llcModulePriority, pModule );
693 err = UpdateModuleLoadRequests( idp, pModule );
701 if (!LLCheckInListCtrl( idp->llcModulePriority, pModule ))
704 LLInsertTail( idp->llcModulePriority, pModule );
747 listId = LListId( pOC->llcOcPostponedLiteObjectLoads );
748 pLiteObjFromList = LLHead( pOC->llcOcPostponedLiteObjectLoads );
749 dsmDP2(("LITE list %u => handle = %
#p\n", listId, pLiteObjFromList));
751 while (pLiteObjFromList)
753 if (pLiteObjFromList->pLoadRequest == pLoadRequest)
758 pLiteObjFromList = LLNext( pLiteObjFromList, listId );
770 dsmAssert((LLParent(pLoadRequest, MODULE_LOAD_REQUEST_LIST) == pLoadRequest->pModule));
771 listEmpty = DSC_ModuleRemoveLoadRequest(idp, pLoadRequest);
774 pModule = (
P_Module)pLoadRequest->pModule;
777 dsmAssert((pLoadRequest->pObjCarousel));
778 dsmAssert((pLoadRequest->pDataCarousel));
779 dsmAssert((pModule));
797 dsmAssert(((pModule->status == MS_PENDING_INFO) ||
798 (pModule->status == MS_PENDING_DDB) ||
799 (pModule->status == MS_BUILDING)));
801 if ((pLoadRequest->rlr.targetKind == TT_CAROUSEL) ||
802 (idp->setup.turboCaching == FALSE) ||
803 (idp->cacheFull == TRUE))
815 dsmDP3((
"exit lmStopModuleLoadRequest\n"));
836 LLRemove( pModule, MODULE_PRIORITY_LIST );
838 LLInsertHead( idp->llcLoadedModules, pModule );
867 LLRemove( pModule, MODULE_DELETE_LIST );
868 DSC_ModuleDestroy( idp, pModule );
870 else if (pModule->status == MS_CACHED)
873 LLRemove( pModule, MODULE_LOADED_LIST );
875 LLInsertHead( idp->llcModulePriority, pModule );
884 if (pOC->root.pLoadRqst)
887 if (LLCheckInListId(MODULE_LOAD_REQUEST_LIST, pLoadRequest))
889 dsmAssert((LLParent(pLoadRequest, MODULE_LOAD_REQUEST_LIST) == pLoadRequest->pModule));
890 DSC_ModuleRemoveLoadRequest(idp, pLoadRequest);
968 if (!LLCount(pDC->llcDcModules))
970 DSC_DataCrslDestroy( idp, pDC );
979 err = DSC_DataCrslCreate( idp, &pOC->root, &(pLoadRequest->tap), &pDC );
982 err = DSC_ModuleCreate( idp, pLoadRequest->objectLocation.moduleId, &pModule );
985 LLInsertTail( pDC->llcDcModules, pModule );
986 err = DSC_DataCrslNewModuleLoad( idp, pDC, pModule );
991 DSC_DataCrslDestroy( idp, pDC );
999 pLoadRequest->pDataCarousel = pDC;
1000 pLoadRequest->pModule = pModule;
1004 dsmAssert((pModule->status != MS_INITIAL));
1005 dsmAssert((pModule->status != MS_EXPIRED));
1007 err = DSC_ModuleAddLoadRequest( idp, pModule, pLoadRequest );
1014 switch (pModule->status)
1016 case MS_ACQ_ABORTED:
1019 pModule->decompressFailureCount = 0;
1023 pModule->status = MS_PENDING_DDB;
1025 case MS_PENDING_DDB:
1046 DEBUG_CHK( err == CLDSM_OK,
1047 dsmDP1((
"ERROR: LoadStalledModule: %u\n", err)));
1048 dsmDP3((
"exit LoadStalledModule -> rtn: %u\n", err));
1087 pLoadRequest->remainingPathOffset += remainingLength + 1;
1092 *nextPathElement =
'\0';
1095 dsmDP3((
"exit loadRequestStepPath\n"));
1103 MemPtr mpModuleData, mpObjectData;
1104 E_DscError err = CLDSM_OK;
1105 U16BIT service_id, temp16;
1106 U32BIT moduleDataSize, carousel_id, temp32, objectLength, i;
1108 ListId_t moduleListId;
1114 MemPtr mpBindingData;
1117 BOOLEAN bDoLoadObject = TRUE;
1118 pLiteOptionObject_t pLiteObject;
1120 dsmDP4((
"LITE_OPTIONS: lmLiteOptionsObjectHandle\n"));
1122 dsmDP4((
"LITE_OPTIONS: Process LITE OPTION for object = %#p\n",
1123 pLoadRequest->rlr.target));
1125 carousel_id = (U32BIT)pLoadRequest->objectLocation.dvbCarouselNSAPaddress[2];
1127 carousel_id &= 0xFF000000;
1128 temp32 = (U32BIT)pLoadRequest->objectLocation.dvbCarouselNSAPaddress[3];
1129 carousel_id |= ((temp32 << 16) & 0x00FF0000);
1130 temp32 = (U32BIT)pLoadRequest->objectLocation.dvbCarouselNSAPaddress[4];
1131 carousel_id |= ((temp32 << 8) & 0x0000FF00);
1132 temp32 = (U32BIT)pLoadRequest->objectLocation.dvbCarouselNSAPaddress[5];
1133 carousel_id |= (temp32 & 0x000000FF);
1135 service_id = pLoadRequest->objectLocation.dvbCarouselNSAPaddress[14];
1137 service_id &= 0xFF00;
1138 temp16 = pLoadRequest->objectLocation.dvbCarouselNSAPaddress[15];
1139 service_id |= (temp16 & 0x00FF);
1143 if (NULL == pCurrOC)
1145 dsmDP1((
"LITE_OPTIONS: Carousel %u not loaded\n", carousel_id));
1148 SIQUERY_CAROUSEL, (H_DsmCarousel *)&pCurrOC);
1150 pLoadRequest->rlr.status = LRS_LITE_OPTIONS_PENDING;
1151 pLoadRequest->pObjCarousel = pCurrOC;
1153 if (!err && pCurrOC && pLoadRequest->rlr.targetKind != TT_TMP_OBJECT)
1155 pLiteObject = (pLiteOptionObject_t)DSC_CmMemGet( idp,
sizeof(LiteOptionObject_t) );
1158 err = CLDSM_ERR_MEM_HEAP_FULL;
1163 dsmDP2((
"LITE_OPTIONS: STORE POSTPONED LITE LOAD: pLiteObject = %#p\n", pLiteObject));
1164 llLinkInit( pLiteObject->llData, NUM_LITE_OBJECT_LOAD_LIST );
1165 pLiteObject->pLoadRequest = pLoadRequest;
1166 strncpy((
char *)pLiteObject->name, (
char *)name, 257);
1169 LLInsertHead( pCurrOC->llcOcPostponedLiteObjectLoads, pLiteObject );
1172 pCurrOC->bOCLiteOptionsObjectProcessing = TRUE;
1178 dsmDP3((
"LITE_OPTIONS: Carousel %u load on going, status:%u\n",
1179 pCurrOC->carouselId,
1180 pCurrOC->root.status));
1182 if (RCS_LOADED != pCurrOC->root.status)
1184 if (pLoadRequest->rlr.targetKind != TT_TMP_OBJECT)
1186 pLiteObject = (pLiteOptionObject_t)DSC_CmMemGet( idp,
sizeof(LiteOptionObject_t) );
1189 err = CLDSM_ERR_MEM_HEAP_FULL;
1194 memset(pLiteObject, 0,
sizeof(LiteOptionObject_t));
1195 llLinkInit( pLiteObject->llData, NUM_LITE_OBJECT_LOAD_LIST);
1197 pLiteObject->pLoadRequest = pLoadRequest;
1198 strncpy((
char *)pLiteObject->name, (
char *)name, 257);
1200 LLInsertHead( pCurrOC->llcOcPostponedLiteObjectLoads, pLiteObject );
1205 pLoadRequest->rlr.status = LRS_LITE_OPTIONS_PENDING;
1206 pLoadRequest->pObjCarousel = pCurrOC;
1207 bDoLoadObject = FALSE;
1210 if (TRUE == bDoLoadObject)
1212 objInfo = pCurrOC->srgObjectInfo;
1215 pCurrModule = DSC_ObjCrslSrgModule(pCurrOC);
1217 moduleDataSize = pCurrModule->moduleInfo.originalSize;
1219 MEMPTR_SEQ_OPEN( MEM_CONTEXT, moduleDataPtr(pCurrModule->hModuleData), 0,
1220 moduleDataSize, FALSE, mpModuleData );
1222 if (moduleDataFindObject( pCurrModule->hModuleData, moduleDataSize,
1223 &(objInfo.objectKey), &mpObjectData ))
1227 pCurrDC = LLParent(pCurrModule, DC_MODULE_LIST);
1229 found = odDirFindBinding( mpObjectData, &objInfo, name, &mpBindingData );
1231 MEMPTR_SEQ_CLOSE( MEM_CONTEXT, pCurrModule->hModuleData, mpModuleData );
1235 valid = odDirGetBindingInfo( mpBindingData, &objectLocation, &objectTap );
1241 moduleListId = LListId( pCurrDC->llcDcModules );
1242 pModuleFromList = LLHead( pCurrDC->llcDcModules );
1246 while (pModuleFromList)
1248 moduleDataSize = pModuleFromList->moduleInfo.originalSize;
1250 if (pModuleFromList->moduleInfo.moduleId == objectLocation.moduleId)
1252 MEMPTR_SEQ_OPEN( MEM_CONTEXT, moduleDataPtr(pCurrModule->hModuleData), 0,
1253 moduleDataSize, FALSE, mpModuleData );
1255 MEMPTR_OPEN( mpModuleData, mpObjectData );
1261 objInfo.objectKey.length = objectLocation.objectKey.length;
1262 for (i = 0; i < objectLocation.objectKey.length; i++)
1264 objInfo.objectKey.data[i] = objectLocation.objectKey.data[i];
1267 if (moduleDataFindObject( pCurrModule->hModuleData, moduleDataSize,
1268 &(objInfo.objectKey), &mpObjectData ))
1270 dsmDP3((
"LITE_OPTIONS: object path:%s found\n", name));
1274 MEMPTR_GET_DIFF( mpModuleData, mpObjectData, objOffset);
1276 objectDataGetKeyAndLen( mpObjectData,
1277 &objInfo.objectKey, &objectLength );
1280 pLoadRequest->targetObjectOffset = (U32BIT) objOffset;
1281 pLoadRequest->targetObjectInfo = objInfo;
1282 pLoadRequest->pModule = pModuleFromList;
1283 pLoadRequest->pObjCarousel = pCurrOC;
1284 pLoadRequest->rlr.status = LRS_LITE_OPTIONS_LOADED;
1288 pModuleFromList = LLNext( pModuleFromList, moduleListId );
1291 MEMPTR_CLOSE( mpObjectData );
1292 MEMPTR_SEQ_CLOSE( MEM_CONTEXT, pCurrModule->hModuleData, mpModuleData );
1299 dsmDP4((
"exit lmLiteOptionsObjectHandle err:%u reqStatus:%u\n", err, pLoadRequest->rlr.status));
1303 E_DscError lmLiteOptionsObjectOnModuleUpdate(
P_DsmCoreInst idp, U8BIT *name,
1307 MemPtr mpModuleData, mpObjectData;
1308 E_DscError err = CLDSM_OK;
1309 U32BIT moduleDataSize, objectLength, i;
1315 MemPtr mpBindingData;
1319 dsmDP4((
"LITE_OPTIONS: lmLiteOptionsObjectOnModuleUpdate\n"));
1321 dsmDP4((
"LITE_OPTIONS: Process LITE OPTION for object = %#p path:%s\n",
1322 pLoadRequest->rlr.target, name));
1324 if ((NULL != pCurrOC) && (NULL != pLoadedModule))
1326 dsmDP3((
"LITE_OPTIONS: Carousel %u load on going, status:%u\n",
1327 pCurrOC->carouselId,
1328 pCurrOC->root.status));
1330 if (DSC_ObjCrslSrgObjectLoaded(pCurrOC))
1332 if ((RCS_LOADED == pCurrOC->root.status) || (RCS_BOOTED == pCurrOC->root.status))
1335 objInfo = pCurrOC->srgObjectInfo;
1336 pSrgModule = DSC_ObjCrslSrgModule(pCurrOC);
1338 moduleDataSize = pSrgModule->moduleInfo.originalSize;
1340 MEMPTR_SEQ_OPEN( MEM_CONTEXT, moduleDataPtr(pSrgModule->hModuleData), 0,
1341 moduleDataSize, FALSE, mpModuleData );
1343 if (moduleDataFindObject( pSrgModule->hModuleData, moduleDataSize,
1344 &(objInfo.objectKey), &mpObjectData))
1348 found = odDirFindBinding( mpObjectData, &objInfo,
1349 name, &mpBindingData );
1352 MEMPTR_SEQ_CLOSE( MEM_CONTEXT, pSrgModule->hModuleData, mpModuleData );
1356 valid = odDirGetBindingInfo( mpBindingData,
1360 dsmDP4((
"LITE_OPTIONS: name %s FOUND in SRG modid = %u\n",
1361 name, objectLocation.moduleId));
1363 if ((objectLocation.moduleId == pLoadedModule->moduleInfo.moduleId) && (valid))
1365 moduleDataSize = pLoadedModule->moduleInfo.originalSize;
1367 MEMPTR_SEQ_OPEN( MEM_CONTEXT, moduleDataPtr(pLoadedModule->hModuleData), 0,
1368 moduleDataSize, FALSE, mpModuleData );
1370 MEMPTR_OPEN( mpModuleData, mpObjectData );
1375 objInfo.objectKey.length = objectLocation.objectKey.length;
1377 for (i = 0; i < objectLocation.objectKey.length; i++)
1379 objInfo.objectKey.data[i] = objectLocation.objectKey.data[i];
1382 if (moduleDataFindObject( pLoadedModule->hModuleData, moduleDataSize,
1383 &(objInfo.objectKey), &mpObjectData ))
1387 MEMPTR_GET_DIFF( mpModuleData, mpObjectData, objOffset);
1389 objectDataGetKeyAndLen( mpObjectData,
1390 &objInfo.objectKey, &objectLength );
1392 pLoadRequest->targetObjectOffset = (U32BIT) objOffset;
1393 pLoadRequest->targetObjectInfo = objInfo;
1394 pLoadRequest->pModule = pLoadedModule;
1395 pLoadRequest->pObjCarousel = pCurrOC;
1396 pLoadRequest->rlr.status = LRS_LITE_OPTIONS_LOADED;
1399 MEMPTR_CLOSE( mpObjectData );
1400 MEMPTR_SEQ_CLOSE( MEM_CONTEXT, pLoadedModule->hModuleData, mpModuleData );
1408 dsmDP2((
"LITE_OPTIONS : abort temporarly object load SRG info not loaded !!\n"));
1455 pNextModule = pLoadRequest->pModule;
1458 dsmAssert((pNextModule->status == MS_CACHED));
1462 if (pNextModule->hModuleData == NULL)
1464 err = DSC_ModuleDecompress( idp, pNextModule );
1465 if (err == CLDSM_ERR_END_OF_DATA)
1469 if ((pLoadRequest->rlr.status == LRS_INITIAL) &&
1470 (pLoadRequest->rlr.targetKind & TT_GEN_OBJECT))
1479 pLoadRequest->rlr.status = LRS_STALLED_SRG_MODULE;
1487 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
1497 pCurrModule = pLoadRequest->pModule;
1498 pCurrDC = pLoadRequest->pDataCarousel;
1499 pCurrOC = pLoadRequest->pObjCarousel;
1501 moduleDataSize = pCurrModule->moduleInfo.originalSize;
1503 MEMPTR_SEQ_OPEN( MEM_CONTEXT, moduleDataPtr(pCurrModule->hModuleData), 0,
1504 moduleDataSize, FALSE, mpModuleData );
1505 MEMPTR_OPEN( mpModuleData, mpObjectData );
1507 if (pLoadRequest->rlr.status == LRS_INITIAL)
1509 switch (pLoadRequest->rlr.targetKind)
1521 dsmAssert((DSC_ObjCrslSrgModule(pCurrOC) != NULL));
1522 dsmAssert((pCurrOC->srgObjectInfo.objectKind == SRG_STR));
1524 objOffset = pCurrOC->srgObjectOffset;
1525 SET_POS_REL( mpObjectData, objOffset );
1526 objInf = pCurrOC->srgObjectInfo;
1528 pLoadRequest->rlr.status = LRS_STALLED_MODULE;
1529 processCurrObj = TRUE;
1532 case TT_PREFETCH_DIR_OBJ:
1533 case TT_PREFETCH_NON_DIR_OBJ:
1536 pLoadRequest->rlr.status = LRS_STALLED_MODULE;
1537 progressLoad = TRUE;
1541 dsmDP1((
"ERROR: Load request - invalid initial target kind: %u\n",
1542 pLoadRequest->rlr.targetKind));
1545 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
1546 err = CLDSM_ERR_INTERNAL;
1556 if (moduleDataFindObject( pCurrModule->hModuleData, moduleDataSize,
1557 &(pLoadRequest->objectLocation.objectKey), &mpObjectData ))
1566 processCurrObj = TRUE;
1570 dsmDP1((
"DATA ERROR: Load request aborted - object not found\n"));
1571 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
1576 dsmDP1((
"DATA ERROR: Load request aborted - object invalid\n"));
1577 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
1584 if (pLoadRequest->rlr.status == LRS_STALLED_SRG_MODULE)
1596 if (!pCurrOC->srgObjectInfo.objectKind)
1598 MEMPTR_GET_DIFF( mpModuleData, mpObjectData, objOffset );
1599 dsmAssert((objOffset >= 0));
1602 dsmAssert((DSC_ObjCrslSrgModule(pCurrOC) != NULL));
1603 dsmAssert((objInf.objectKind == SRG_STR));
1605 pCurrOC->srgObjectOffset = (U32BIT) objOffset;
1606 pCurrOC->srgObjectInfo = objInf;
1610 if (pLoadRequest->pRemainingPath == NULL ||
1611 pLoadRequest->pRemainingPath[pLoadRequest->remainingPathOffset] == 0)
1615 pLoadRequest->rlr.status = LRS_LOADED;
1621 if ((objInf.objectKind == DIR_STR) ||
1622 (objInf.objectKind == SRG_STR))
1627 loadRequestStepPath( pLoadRequest, nextPathElement );
1629 if (*nextPathElement !=
'\0')
1631 MEMPTR_OPEN( mpObjectData, mpBindingData );
1633 found = odDirFindBinding( mpObjectData, &objInf,
1634 nextPathElement, &mpBindingData );
1639 valid = odDirGetBindingInfo( mpBindingData,
1640 &pLoadRequest->objectLocation,
1641 &pLoadRequest->tap );
1645 if (pLoadRequest->objectLocation.uiBindingTag == TAG_LITE_OPTIONS)
1647 err = lmLiteOptionsObjectHandle(idp, nextPathElement, pLoadRequest);
1653 progressLoad = TRUE;
1666 pLoadRequest->objectLocation.carouselId == pCurrOC->root.rcid,
1667 dsmDP1((
"DATA ERROR: objectLocation carouselId (%u) does not match current ID (%u)\n",
1668 pLoadRequest->objectLocation.carouselId, pCurrOC->root.rcid)),
1669 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
1670 progressLoad = FALSE
1675 dsmDP1((
"DATA ERROR: Invalid binding\n"));
1676 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
1681 dsmDP2((
"INFO: Binding not found: %s\n",
1683 pLoadRequest->rlr.status = LRS_ABORTED_PATH_ERROR;
1686 MEMPTR_CLOSE( mpBindingData );
1693 switch (pLoadRequest->rlr.targetKind)
1695 case TT_PREFETCH_DIR_OBJ:
1696 pLoadRequest->rlr.status = LRS_LOADED;
1701 dsmAssert((objInf.objectKind == SRG_STR ||
1702 objInf.objectKind == DIR_STR));
1704 pLoadRequest->rlr.status = LRS_LOADED;
1708 dsmDP1((
"ERROR: Load request - invalid"));
1709 dsmDP1((
" directory target kind: %u\n",
1710 pLoadRequest->rlr.targetKind));
1713 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
1714 err = CLDSM_ERR_INTERNAL;
1723 dsmAssert((objInf.objectKind == FIL_STR ||
1724 objInf.objectKind == STR_STR ||
1725 objInf.objectKind == STE_STR));
1727 pLoadRequest->rlr.status = LRS_LOADED;
1734 if (pLoadRequest->rlr.status == LRS_LOADED)
1736 MEMPTR_GET_DIFF( mpModuleData, mpObjectData, objOffset );
1737 dsmAssert((objOffset >= 0));
1739 pLoadRequest->targetObjectOffset = (U32BIT) objOffset;
1740 pLoadRequest->targetObjectInfo = objInf;
1749 if ((pLoadRequest->rlr.status == LRS_LOADED) || (progressLoad))
1751 if (DSC_LoadRsqtPriority(&pLoadRequest->rlr) != SF_PRIORITY_LOW)
1753 if (pCurrModule->loadedCount == 0)
1756 LLInsertHead( idp->llcModulePriority, pCurrModule );
1766 MEMPTR_CLOSE( mpObjectData );
1767 MEMPTR_SEQ_CLOSE( MEM_CONTEXT, pCurrModule->hModuleData, mpModuleData );
1779 progressLoad = FALSE;
1782 if (pLoadRequest->objectLocation.moduleId ==
1783 pCurrModule->moduleInfo.moduleId)
1786 progressLoad = TRUE;
1793 pLoadRequest->pModule = NULL;
1796 if ((pLoadRequest->tap.transactionId &
1797 TRANSACTION_ID_IDENT_MASK) !=
1798 pCurrDC->dataCarouselId)
1802 pLoadRequest->pDataCarousel =
1803 DSC_DataCrslListFindById( pCurrOC->root.llcDataCarousels,
1804 pLoadRequest->tap.transactionId );
1809 if (pLoadRequest->pDataCarousel != NULL)
1812 pNextDC = pLoadRequest->pDataCarousel;
1815 pLoadRequest->pModule =
1816 DSC_ModuleListFindById( pNextDC->llcDcModules,
1817 pLoadRequest->objectLocation.moduleId );
1819 if (pLoadRequest->pModule != NULL)
1822 pNextModule = pLoadRequest->pModule;
1825 if (pNextModule->status == MS_CACHED)
1828 progressLoad = TRUE;
1843 pLoadRequest->rlr.status = LRS_STALLED_MODULE;
1847 while (progressLoad);
1849 DEBUG_CHK( err == CLDSM_OK,
1850 dsmDP1((
"ERROR: ProgressLoadRequest: %u\n", err)));
1851 dsmDP3((
"exit ProgressLoadRequest -> rtn: %u\n", err));
1872 dsmAssert((pCurrModule->status == MS_CACHED));
1875 dsmAssert((pCurrModule->hModuleData != NULL));
1878 dsmAssert((pCurrModule->llcLoadRequests != NULL));
1882 pLoadRequest = LLTail( pCurrModule->llcLoadRequests );
1883 while (pLoadRequest != NULL)
1885 dsmAssert((LLParent(pLoadRequest, MODULE_LOAD_REQUEST_LIST) == pCurrModule));
1886 DSC_ModuleRemoveLoadRequest(idp, pLoadRequest);
1889 dsmAssert((pLoadRequest->pModule == pCurrModule));
1891 DSC_ModuleUse( idp, pCurrModule );
1894 dsmAssert(((pLoadRequest->rlr.status == LRS_STALLED_MODULE) ||
1895 (pLoadRequest->rlr.status == LRS_STALLED_SRG_MODULE)));
1902 err = ProgressLoadRequest( idp, pLoadRequest );
1905 finaliseLoad = FALSE;
1907 switch (pLoadRequest->rlr.status)
1910 if ((pLoadRequest->rlr.targetKind == TT_GEN_OBJECT) &&
1911 (pLoadRequest->rlr.target != NULL))
1915 dsmAssert((pLoadRequest->pModule != NULL));
1916 dsmAssert((pLoadRequest->pModule->status == MS_CACHED));
1917 dsmAssert((pLoadRequest->pModule->hModuleData != NULL));
1918 if (pCurrModule == pLoadRequest->pModule)
1927 currModuleContainsTargetObject = TRUE;
1928 finaliseLoad = TRUE;
1944 UpdateModuleCachingNoFlush( idp, pLoadRequest );
1946 if (pLoadRequest->pModule == NULL)
1948 newErr = LoadStalledModule( idp, pLoadRequest );
1951 err = handleInLoopError( idp, err, newErr );
1954 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
1955 finaliseLoad = TRUE;
1962 finaliseLoad = TRUE;
1971 finaliseLoad = TRUE;
1976 case LRS_ABORTED_PATH_ERROR:
1977 case LRS_ABORTED_LOAD_ERROR:
1978 finaliseLoad = TRUE;
1982 case LRS_STALLED_MODULE:
1983 case LRS_STALLED_SRG_MODULE:
1985 newErr = LoadStalledModule( idp, pLoadRequest );
1989 err = handleInLoopError( idp, err, newErr );
1992 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
1993 finaliseLoad = TRUE;
2006 dsmDP1((
"ERROR: Illegal loadRequest status = %u\n",
2007 pLoadRequest->rlr.status));
2010 err = handleInLoopError( idp, err, CLDSM_ERR_INTERNAL );
2011 finaliseLoad = TRUE;
2017 err = handleInLoopError( idp, err, CLDSM_ERR_INTERNAL );
2020 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
2021 finaliseLoad = TRUE;
2024 DSC_ModuleUnUse( idp, pCurrModule );
2032 pLoadRequest = (pCurrModule->llcLoadRequests) ? LLTail( pCurrModule->llcLoadRequests ) : NULL;
2035 if (currModuleContainsTargetObject &&
2036 pCurrModule->cachingRules == CACHE_RULES_FROM_STREAM)
2042 dsmAssert((pCurrModule->status == MS_CACHED));
2043 dsmAssert((pCurrModule->hModuleData != NULL));
2046 dsmAssert((pCurrModule->pDdbSf == NULL));
2049 dsmAssert((pCurrModule->llcLoadRequests == NULL));
2053 DSC_ModuleDataRefresh( idp, pCurrModule );
2056 DEBUG_CHK( err == CLDSM_OK,
2057 dsmDP1((
"ERROR: UpdateModuleLoadRequests: %u\n", err)));
2058 dsmDP3((
"exit UpdateModuleLoadRequests -> rtn: %u\n", err));
2069 static E_DscError PreFetchRelativeDirObj(
P_DsmCoreInst idp,
2075 E_DscError err = CLDSM_OK;
2076 BOOLEAN loadFinished = FALSE;
2078 dsmDP3((
"PreFetchRelativeDirObj()\n"));
2079 dsmAssert((idp != NULL));
2080 dsmAssert((pCurrLR != NULL));
2083 idp->pfrdoCallDepth++;
2087 if (idp->pfrdoCallDepth > MAX_DIRECTORY_DEPTH)
2089 dsmDP1((
"ERROR: PreFetchRelativeDirObj recursion limit reached: %u\n", idp->pfrdoCallDepth));
2090 err = CLDSM_ERR_RECURSION_LIMIT_REACHED;
2093 else if (idp->cacheFull == FALSE)
2095 pOC = pCurrLR->pObjCarousel;
2099 DSC_ModuleUse( idp, pCurrLR->pModule );
2101 dsmAssert((pOC->root.status == RCS_LOADED));
2103 err = DSC_LoadRsqtCreate( idp,
sizeof(
S_LoadRequest), TT_PREFETCH_DIR_OBJ, NULL,
2104 (F_LoadFinalise)PreFetchDirLoadFinalise, (
P_RootLoadRqst *)&pLoadRequest );
2107 pLoadRequest->pObjCarousel = pOC;
2109 pLoadRequest->pDataCarousel = pCurrLR->pDataCarousel;
2110 pLoadRequest->pModule = pCurrLR->pModule;
2111 pLoadRequest->objectLocation = *pLocation;
2112 pLoadRequest->tap = *pTap;
2114 err = ProgressLoadRequest( idp, pLoadRequest );
2117 switch (pLoadRequest->rlr.status)
2121 PreFetchDirLoadFinalise( idp, pLoadRequest );
2122 loadFinished = TRUE;
2125 case LRS_STALLED_MODULE:
2126 err = LoadStalledModule( idp, pLoadRequest );
2129 case LRS_ABORTED_LOAD_ERROR:
2130 loadFinished = TRUE;
2134 err = CLDSM_ERR_INTERNAL;
2138 if (err || loadFinished)
2146 DSC_ModuleUnUse( idp, pCurrLR->pModule );
2150 idp->pfrdoCallDepth--;
2152 DEBUG_CHK( err == CLDSM_OK,
2153 dsmDP1((
"ERROR: PreFetchRelativeDirObj: %u\n", err)));
2154 dsmDP3((
"exit PreFetchRelativeDirObj -> rtn: %u\n", err));
2164 static E_DscError PreFetchRelativeNonDirObj(
P_DsmCoreInst idp,
2170 E_DscError err = CLDSM_OK;
2171 BOOLEAN loadFinished = FALSE;
2173 dsmDP3((
"PreFetchRelativeNonDirObj()\n"));
2174 dsmAssert((idp != NULL));
2175 dsmAssert((pCurrLR != NULL));
2177 if (idp->cacheFull == FALSE)
2179 pOC = pCurrLR->pObjCarousel;
2183 DSC_ModuleUse( idp, pCurrLR->pModule );
2185 dsmAssert((pOC->root.status == RCS_LOADED));
2187 err = DSC_LoadRsqtCreate( idp,
sizeof(
S_LoadRequest), TT_PREFETCH_NON_DIR_OBJ, pOC,
2191 pLoadRequest->pObjCarousel = pOC;
2193 pLoadRequest->pDataCarousel = pCurrLR->pDataCarousel;
2194 pLoadRequest->pModule = pCurrLR->pModule;
2195 pLoadRequest->objectLocation = *pLocation;
2196 pLoadRequest->tap = *pTap;
2198 err = ProgressLoadRequest( idp, pLoadRequest );
2201 switch (pLoadRequest->rlr.status)
2204 loadFinished = TRUE;
2207 case LRS_STALLED_MODULE:
2208 err = LoadStalledModule( idp, pLoadRequest );
2211 case LRS_ABORTED_LOAD_ERROR:
2212 loadFinished = TRUE;
2216 err = CLDSM_ERR_INTERNAL;
2220 if (err || loadFinished)
2227 DSC_ModuleUnUse( idp, pCurrLR->pModule );
2229 DEBUG_CHK( err == CLDSM_OK,
2230 dsmDP1((
"ERROR: PreFetchRelativeNonDirObj: %u\n", err)));
2231 dsmDP3((
"exit PreFetchRelativeNonDirObj -> rtn: %u\n", err));
2246 static E_DscError PreFetchNewDirsAndDIIsFromLoadedDir(
P_DsmCoreInst idp,
2252 MemPtr mpObjectData;
2253 MemPtr mpBindingData;
2254 E_DscError err = CLDSM_OK;
2260 dsmDP3((
"PreFetchNewDirsAndDIIsFromLoadedDir()\n"));
2261 dsmAssert((idp != NULL));
2262 dsmAssert((pLoadRequest != NULL));
2266 idp->pfsdndCallDepth++;
2270 if (idp->pfsdndCallDepth > MAX_DIRECTORY_DEPTH)
2272 dsmDP1((
"ERROR: PreFetchNewDirsAndDIIsFromLoadedDir recursion limit reached: %u\n",
2273 idp->pfrdoCallDepth));
2274 err = CLDSM_ERR_RECURSION_LIMIT_REACHED;
2279 pModule = pLoadRequest->pModule;
2283 dsmAssert((pModule->status == MS_CACHED));
2284 dsmAssert((pModule->hModuleData != NULL));
2286 MEMPTR_SEQ_OPEN( MEM_CONTEXT,
2287 moduleDataPtr(pModule->hModuleData), pLoadRequest->targetObjectOffset,
2288 pLoadRequest->targetObjectInfo.objectLen,
2289 FALSE, mpObjectData );
2291 MEMPTR_OPEN( mpObjectData, mpBindingData );
2293 numBindings = odDirCountAndFirstBinding( mpObjectData, &(pLoadRequest->targetObjectInfo), &mpBindingData );
2295 while (numBindings--)
2297 if (odDirGetBindingKind( mpBindingData, &bindingKind ))
2299 if (bindingKind == DIR_STR)
2302 if (odDirGetBindingInfo( mpBindingData, &objLocation, &objTap ))
2304 err = PreFetchRelativeDirObj( idp, pLoadRequest, &objLocation, &objTap,
2328 if (odDirGetBindingInfo( mpBindingData, &objLocation, &objTap ))
2330 if (objLocation.uiBindingTag == TAG_LITE_OPTIONS)
2332 U16BIT service_id = 0;
2333 U32BIT carousel_id = 0;
2335 H_DsmCarousel carouselHandle;
2340 carousel_id = (U32BIT)objLocation.dvbCarouselNSAPaddress[2];
2342 carousel_id &= 0xFF000000;
2343 temp32 = (U32BIT)objLocation.dvbCarouselNSAPaddress[3];
2344 carousel_id |= ((temp32 << 16) & 0x00FF0000);
2345 temp32 = (U32BIT)objLocation.dvbCarouselNSAPaddress[4];
2346 carousel_id |= ((temp32 << 8) & 0x0000FF00);
2347 temp32 = (U32BIT)objLocation.dvbCarouselNSAPaddress[5];
2348 carousel_id |= (temp32 & 0x000000FF);
2350 service_id = objLocation.dvbCarouselNSAPaddress[14];
2352 service_id &= 0xFF00;
2353 temp16 = objLocation.dvbCarouselNSAPaddress[15];
2354 service_id |= (temp16 & 0x00FF);
2356 dsmDP2((
"CALL CDSM_LoadCarousel(carID:%u)\n", carousel_id));
2359 SIQUERY_CAROUSEL, &carouselHandle);
2362 if (err != CLDSM_OK)
2369 pNewOC->bOCLiteOptionsObjectProcessing = TRUE;
2373 pOC = pLoadRequest->pObjCarousel;
2374 dsmAssert((pOC != NULL));
2376 pDC = DSC_DataCrslListFindById( pOC->root.llcDataCarousels, objTap.transactionId );
2380 err = PreFetchRelativeNonDirObj( idp, pLoadRequest, &objLocation, &objTap, 0 );
2391 if (!odDirGetNextBinding( mpBindingData, &mpBindingData ))
2397 MEMPTR_CLOSE( mpBindingData );
2398 MEMPTR_SEQ_CLOSE( MEM_CONTEXT, pModule->hModuleData, mpObjectData );
2403 idp->pfsdndCallDepth--;
2405 DEBUG_CHK( err == CLDSM_OK,
2406 dsmDP1((
"ERROR: PreFetchNewDirsAndDIIsFromLoadedDir: %u\n", err)));
2407 dsmDP3((
"exit PreFetchNewDirsAndDIIsFromLoadedDir -> rtn: %u\n", err));
2433 dsmAssert((pModule->status == MS_CACHED));
2434 dsmAssert((pModule->hModuleData != NULL));
2437 dsmAssert((pModule->pDdbSf == NULL));
2440 dsmAssert((pModule->llcLoadRequests == NULL));
2442 if (pModule->cachingRules == CACHE_RULES_FROM_STREAM)
2445 pDC = LLParent( pModule, DC_MODULE_LIST );
2446 pOC = LLParent( pDC, OC_DATA_CAROUSEL_LIST );
2449 dsmAssert((pOC != NULL));
2450 dsmAssert((pDC != NULL));
2452 if (DSC_ModuleDataRefresh( idp, pModule ) == CLDSM_OK)
2456 if (DSC_ObjCrslSrgModule(pOC) == pModule)
2459 pLoadRequest->rlr.status = LRS_STALLED_SRG_MODULE;
2464 pLoadRequest->rlr.status = LRS_STALLED_MODULE;
2468 dsmDP3((
"exit UpdateModuleCachingNoFlush\n"));
2474 pLiteOptionObject_t pLiteObjFromListToDelete = NULL;
2475 pLiteOptionObject_t pLiteObjFromList = NULL;
2479 listId = LListId( pCarousel->llcOcPostponedLiteObjectLoads );
2480 pLiteObjFromList = LLHead( pCarousel->llcOcPostponedLiteObjectLoads );
2481 dsmDP2((
"LITE list %u => handle = %#p\n", listId, pLiteObjFromList));
2483 while (pLiteObjFromList)
2485 pLiteObjFromListToDelete = NULL;
2487 dsmDP2((
"CALL liteOptionsObjectHandle: name = %s hRequest = %#p\n",
2488 pLiteObjFromList->name, pLiteObjFromList->pLoadRequest));
2490 lmLiteOptionsObjectHandle(idp, pLiteObjFromList->name, pLiteObjFromList->pLoadRequest);
2492 if (LRS_LITE_OPTIONS_LOADED == pLiteObjFromList->pLoadRequest->rlr.status)
2494 dsmDP2((
"LITE_OPTIONS: Finalise object loading\n"));
2495 ObjectLoadFinalise(idp, pLiteObjFromList->pLoadRequest);
2497 pLiteObjFromListToDelete = pLiteObjFromList;
2502 if (NULL != pLiteObjFromListToDelete)
2504 LLRemove( pLiteObjFromListToDelete, OC_LITE_OBJECT_LOAD_LIST );
2506 pLiteObjFromList = LLNext( pLiteObjFromList, listId );
2516 listId = LListId( idp->llcCurrLoadRequests );
2517 pLoadRequest = LLHead( idp->llcCurrLoadRequests );
2521 pNextRequest = LLNext( pLoadRequest, listId );
2522 if (pLoadRequest->rlr.targetKind & TT_GEN_OBJECT)
2524 if (pLoadRequest->rlr.status != LRS_ABORT_PENDING_RELOAD)
2527 if (pLoadRequest->rlr.status == LRS_STALLED_MODULE || pLoadRequest->rlr.status == LRS_STALLED_SRG_MODULE)
2529 dsmAssert((LLParent(pLoadRequest, MODULE_LOAD_REQUEST_LIST) == pLoadRequest->pModule));
2530 DSC_ModuleRemoveLoadRequest(idp, pLoadRequest);
2535 pLoadRequest->pDataCarousel = NULL;
2536 pLoadRequest->pModule = NULL;
2537 if (pLoadRequest->rlr.target)
2540 pDsmObject->pObjCarousel = pOC;
2541 pOC->loadedObjectCount++;
2544 pLoadRequest->pObjCarousel = pOC;
2545 pLoadRequest->rlr.status = LRS_INITIAL;
2546 pLoadRequest->objectLocation = pOC->srgObjLoc;
2547 pLoadRequest->tap = pOC->srgTap;
2548 pLoadRequest->remainingPathOffset = 0;
2549 if (LoadRequestOnSrg( idp, pOC, pLoadRequest ) == CLDSM_OK &&
2550 pLoadRequest->rlr.status == LRS_STALLED_MODULE)
2552 if (LoadStalledModule( idp, pLoadRequest ) == CLDSM_OK)
2557 pLoadRequest->rlr.status = LRS_ABORTED_LOAD_ERROR;
2563 dsmAssert((pLoadRequest->rlr.status != LRS_STALLED_SRG_MODULE));
2567 pLoadRequest = pNextRequest;
2569 while (pLoadRequest);
2578 E_OCLoadStatus status = OC_LOAD_ABORTED_ERROR;
2579 E_DscError err = CLDSM_OK;
2581 dsmDP3((
"carouselLoadFinalise()\n"));
2582 dsmAssert((idp != NULL));
2583 dsmAssert((pLoadRequest != NULL));
2584 dsmAssert((pLoadRequest->rlr.targetKind == TT_CAROUSEL));
2586 pCarousel = pLoadRequest->pObjCarousel;
2588 dsmDP2((
"carouselLoadFinalise() pCarousel->carouselId = %u\n", pCarousel->root.rcid));
2590 dsmDP2((
"carouselLoadFinalise() status = %u\n", pLoadRequest->rlr.status));
2592 switch (pLoadRequest->rlr.status)
2594 case LRS_STALLED_SRG_MODULE:
2595 dsmAssert((pCarousel->root.status == RCS_BOOTED));
2596 status = OC_LOAD_BOOTED;
2600 pCarousel->root.status = RCS_LOADED;
2601 status = OC_LOAD_COMPLETED;
2603 DSC_ObjCrslUpdateSuiLoaded(idp,pCarousel);
2605 if (!pCarousel->bOCLiteOptionsObjectProcessing &&
2606 idp->setup.turboCaching == TRUE)
2609 err = PreFetchNewDirsAndDIIsFromLoadedDir( idp, pLoadRequest );
2613 dsmDP1((
"ERROR: carouselLoadFinalise: %u\n", err));
2617 err = handleInLoopError( idp, CLDSM_OK, err );
2622 case LRS_ABORTED_TIMEOUT:
2623 pCarousel->root.status = RCS_LOAD_FAILED;
2624 status = OC_LOAD_ABORTED_TIMEOUT;
2627 case LRS_ABORTED_PATH_ERROR:
2628 pCarousel->root.status = RCS_LOAD_FAILED;
2629 status = OC_LOAD_ABORTED_PATH_ERROR;
2632 case LRS_ABORTED_LOAD_ERROR:
2633 pCarousel->root.status = RCS_LOAD_FAILED;
2634 status = OC_LOAD_ABORTED_ERROR;
2637 case LRS_ABORTED_BY_REQUESTER:
2638 pCarousel->root.status = RCS_LOAD_FAILED;
2639 status = OC_LOAD_ABORTED_UNLOAD;
2644 pCarousel->root.status = RCS_LOAD_FAILED;
2645 status = OC_LOAD_ABORTED_ERROR;
2648 if (pCarousel->root.status != RCS_BOOTED)
2651 pCarousel->root.pLoadRqst = NULL;
2654 if (idp->setup.notifyCarouselLoadEventFunc)
2656 idp->setup.notifyCarouselLoadEventFunc((H_DsmCarousel)pCarousel, status, pCarousel->root.rcid );
2658 if (status == OC_LOAD_COMPLETED)
2660 if (TRUE == pCarousel->bOCLiteOptionsObjectProcessing)
2662 ProcessLiteOptionsObjects(idp, pCarousel);
2667 listCount = LLCount( idp->llcCurrLoadRequests );
2670 ProcessLoadRequestsOnCarousel(idp, pCarousel);
2675 dsmDP3((
"exit carouselLoadFinalise\n"));
2681 P_DsmObject pDsmObject = pLoadRequest->rlr.target;
2683 dsmAssert((idp != NULL));
2684 dsmAssert((pLoadRequest != NULL));
2685 dsmAssert((pDsmObject != NULL));
2686 dsmAssert((pLoadRequest->rlr.targetKind == TT_GEN_OBJECT));
2687 dsmAssert((pDsmObject->magic == DSM_OBJECT_MAGIC));
2689 dsmDP2((
"########### ObjectLoadFinalise(status=%d) ###############\n", pLoadRequest->rlr.status));
2693 pDsmObject->r.pLoadRequest = NULL;
2695 switch (pLoadRequest->rlr.status)
2698 case LRS_LITE_OPTIONS_LOADED:
2699 dsmDP2((
"objectLoaded ModuleId=%d\n",pLoadRequest->pModule->moduleInfo.moduleId));
2700 pDsmObject->pObjCarousel = pLoadRequest->pObjCarousel;
2701 pDsmObject->pModule = pLoadRequest->pModule;
2702 pDsmObject->objectDataOffset =
2703 pLoadRequest->targetObjectOffset;
2704 pDsmObject->objectInfo = pLoadRequest->targetObjectInfo;
2706 convertObjectKindStr(
2707 pLoadRequest->targetObjectInfo.objectKind );
2709 lmSetObjectModuleLoaded( idp, pDsmObject->pModule );
2711 pDsmObject->status = OBJ_LOAD_COMPLETED;
2714 case LRS_ABORTED_TIMEOUT:
2715 ERRPRINT(
"%p", pDsmObject)
2716 pDsmObject->status = OBJ_LOAD_ABORTED_TIMEOUT;
2719 case LRS_ABORTED_PATH_ERROR:
2720 ERRPRINT("%p", pDsmObject)
2721 pDsmObject->status = OBJ_LOAD_ABORTED_PATH_ERROR;
2724 case LRS_ABORTED_LOAD_ERROR:
2725 ERRPRINT("%p", pDsmObject)
2726 pDsmObject->status = OBJ_LOAD_ABORTED_ERROR;
2729 case LRS_ABORTED_BY_REQUESTER:
2730 ERRPRINT("%p", pDsmObject)
2731 pDsmObject->status = OBJ_LOAD_ABORTED_UNLOAD;
2735 ERRPRINT("%p", pDsmObject)
2736 pDsmObject->status = OBJ_LOAD_ABORTED_ERROR;
2741 if (idp->setup.notifyObjectLoadEventFunc)
2743 idp->setup.notifyObjectLoadEventFunc( pDsmObject, pDsmObject->status,
2744 pLoadRequest->rlr.usrRef );
2746 dsmDP3((
"exit ObjectLoadFinalise\n"));
2758 E_DscError err = CLDSM_OK;
2760 dsmDP3((
"PreFetchDirLoadFinalise()\n"));
2761 dsmAssert((idp != NULL));
2762 dsmAssert((pLoadRequest != NULL));
2763 dsmAssert((pLoadRequest->rlr.targetKind == TT_PREFETCH_DIR_OBJ));
2767 idp->pfdlfCallDepth++;
2771 if (idp->pfdlfCallDepth > MAX_DIRECTORY_DEPTH)
2773 dsmDP1((
"ERROR: PreFetchDirLoadFinalise recursion limit reached: %u\n",
2774 idp->pfrdoCallDepth));
2775 err = CLDSM_ERR_RECURSION_LIMIT_REACHED;
2780 switch (pLoadRequest->rlr.status)
2784 err = PreFetchNewDirsAndDIIsFromLoadedDir( idp, pLoadRequest );
2788 dsmDP1((
"ERROR: PreFetchDirLoadFinalise: %u\n", err));
2792 err = handleInLoopError( idp, CLDSM_OK, err );
2796 case LRS_ABORTED_TIMEOUT:
2797 case LRS_ABORTED_LOAD_ERROR:
2798 case LRS_ABORTED_BY_REQUESTER:
2809 idp->pfdlfCallDepth--;
2811 dsmDP3((
"exit PreFetchDirLoadFinalise\n"));
Header to the dataCarousel module - functions/methods for creating/destroying and managing attributes...
General include file for clDsm library internal definitions.
void DSC_LoadRsqtAbort(P_DsmCoreInst idp, P_RootLoadRqst pLoadRqst)
Force abort (on error) any type of load request Finalise the load request (notify client) and destroy...
Header to the loadMgr module.
Header to the sectionTimer module.
P_RootCarousel DSC_RootCrslListFindById(P_LLControl plcCarousels, U16BIT serviceId, U32BIT couId)
Find Carousel from ID's.
BOOLEAN objectDataGetInfo(const MemPtr mpObjectData, ObjectDataInfo_t *pObjInf)
Parse the supplied object data. Verify selected fields. Extract generic information from selected fie...
Header to the cacheMgr module.
E_DscError CDSM_LoadCarousel(H_DsmCoreInst instance, U16BIT service_id, U32BIT carousel_id, E_SIQueryKind kind, H_DsmCarousel *pclDsmCarouselHandle)
Request load of a DSM-CC Object Carousel (service domain).
Header to the moduleDecompress module.
Header to dsmObject module - functions for managing DSM object heap.
Main API to DSM-CC core layer (provided functions and required callbacks).
void DSC_ModuleDeleteDcTidyUp(P_DsmCoreInst idp, P_Module pModule)
Delete module and destroy parent DC if now empty.
Header to the sectionFilter module.
Header to the object module - functions/methods accessing data of object messages inside modules...
E_DscError DSC_ModuleAcquireStart(P_DsmCoreInst idp, P_Module pModule, E_SFPriority sfPriority)
Start aquisition of module.
Header to the 'module' module - Functions/methods for creating/destroying and managing attributes of ...
Defines memory access utils to work with managed (MemMgr) memory.
eader to the clDsmUtils module.
Header to the moduleData module.