34 #define INVALID_DSI_TRANSACTION_ID 0xFFFFFFFF
57 dsmAssert((idp != NULL));
58 dsmAssert((pRC != NULL));
60 llLinkInit( pRC->llData, NUM_LISTS_ROOT_CAROUSEL );
64 pRC->serviceId = serviceId;
65 pRC->dsiTransactionId = INVALID_DSI_TRANSACTION_ID;
66 pRC->status = RCS_INITIAL;
67 pRC->pCrslInfo = NULL;
70 dsmAssert((pRC->pDsiSf == NULL));
71 dsmAssert((pRC->pPendingSiQueryRef == NULL));
72 dsmAssert((pRC->llcDataCarousels == NULL));
73 dsmAssert((pRC->llcDiiAcquires == NULL));
76 err = LLCreate( idp, pRC, OC_DII_ACQUIRE_LIST, &pRC->llcDiiAcquires );
79 pRC->llcDiiAcquires = NULL;
83 err = LLCreate( idp, pRC, OC_DATA_CAROUSEL_LIST, &pRC->llcDataCarousels );
86 LLDestroy( idp, &pRC->llcDiiAcquires );
88 else if (NULL != idp->setup.subscribeSIChangeFunc && serviceId != 0)
90 err = idp->setup.subscribeSIChangeFunc( idp->setup.siqInstance, serviceId );
93 case CLDSM_DUPLICATE_REQUEST:
101 LLDestroy( idp, &pRC->llcDiiAcquires );
102 LLDestroy( idp, &pRC->llcDataCarousels );
112 dsmAssert((idp != NULL));
113 dsmAssert((pRC != NULL));
115 dsmAssert((pRC->magic == OC_MAGIC || pRC->magic == UC_MAGIC));
118 dsmAssert((pRC->llData[ROOT_CAROUSEL_LIST].pLLCtrl == NULL));
121 dsmAssert((pRC->llcDiiAcquires != NULL));
124 dsmAssert((pRC->llcDataCarousels != NULL));
127 dsmAssert((pRC->pDsiSf == NULL));
130 dsmAssert((pRC->pPendingSiQueryRef == NULL));
136 listCount = LLCount( pRC->llcDataCarousels );
137 dsmAssert((listCount == 0));
141 if (NULL != idp->setup.unsubscribeSIChangeFunc && pRC->serviceId != 0)
143 idp->setup.unsubscribeSIChangeFunc( idp->setup.siqInstance, pRC->serviceId );
148 pRC->rcid = INVALID_CAROUSEL_ID;
150 pRC->dsiTransactionId = INVALID_DSI_TRANSACTION_ID;
151 pRC->status = RCS_INITIAL;
152 pRC->dsiAssocTag = 0;
154 while (pRC->pCrslInfo != NULL)
157 pCrslInfo = pRC->pCrslInfo->next;
158 idp->setup.freeFunc(pRC->pCrslInfo);
159 pRC->pCrslInfo = pCrslInfo;
162 LLDestroy( idp, &(pRC->llcDataCarousels));
163 LLDestroy( idp, &(pRC->llcDiiAcquires));
168 return LLParent( pDC, OC_DATA_CAROUSEL_LIST );
174 pLoadRqst = pRC->pLoadRqst;
175 if (NULL != pLoadRqst)
177 pLoadRqst->status = LRS_ABORTED_LOAD_ERROR;
178 DSC_LoadRsqtFinalise( idp, pLoadRqst );
179 pRC->pLoadRqst = NULL;
193 dsmAssert((idp != NULL));
194 dsmAssert((pRC != NULL));
195 dsmAssert((pCarouselInfo != NULL));
196 dsmAssert((pRC->status == RCS_PENDING_BOOTINFO));
200 if (pRC->rcid == INVALID_CAROUSEL_ID || pRC->rcid == UNKNOWN_CAROUSEL_ID)
202 pRC->rcid = pCarouselInfo->carouselId;
206 pRC->dsiAssocTag = pCarouselInfo->associationTag;
207 pRC->pid = pCarouselInfo->pid;
208 pRC->pCrslInfo = pCarouselInfo->next;
210 dsmAssert((pRC->pLoadRqst != NULL));
212 dsmAssert((pLoadRqst->status == LRS_INITIAL));
215 target.kind = SFK_DSI;
216 target.id = pRC->rcid;
217 target.associationTag = pRC->dsiAssocTag;
219 (target.associationTag == INVALID_ASSOCIATION_TAG)? pRC->pid : pRC->serviceId;
221 err = DSC_SectionFilterStart( idp, &target, SF_PRIORITY_HIGH, &pRC->pDsiSf );
224 pLoadRqst->status = LRS_STALLED_DSI;
226 pRC->status = RCS_BOOTING;
230 ERRLOG(DD_OC,
"ERR=%u", err)
243 dsmAssert((idp != NULL));
244 dsmAssert((pRC != NULL));
246 if (pRC->pDsiSf != NULL)
248 target = pRC->pDsiSf->target;
249 DSC_SectionFilterStop( idp, &pRC->pDsiSf );
254 target.kind = SFK_DSI;
255 target.id = pRC->rcid;
256 target.associationTag = pRC->dsiAssocTag;
257 target.serviceId = (target.associationTag == INVALID_ASSOCIATION_TAG)? pRC->pid : pRC->serviceId;
260 err = DSC_SectionFilterStart( idp, &target, SF_PRIORITY_HIGH, &pRC->pDsiSf );
263 ERRLOG(DD_OC,
"ERR=%u", err)
276 dsmDP3((
"ocListFindById()\n"));
277 dsmAssert((plcCarousels != NULL));
280 listId = LListId( plcCarousels );
289 if ((pRC->serviceId == serviceId) &&
290 (pRC->rcid == couId))
295 pRC = LLNext( pRC, listId );
302 return (pRC) ? pRC->serviceId : 0xFFFF;
307 return (pRC) ? pRC->pid : 0xFFFF;
312 return LLHead( pRC->llcDataCarousels );
317 dsmAssert((pRC != NULL));
318 dsmAssert((pDC != NULL));
319 LLInsertTail( pRC->llcDataCarousels, pDC );
425 if (pRC->pDsiSf != NULL)
427 DSC_SectionFilterStop( idp, &pRC->pDsiSf );
429 pRC->status = RCS_PENDING_BOOTINFO;
430 dsmAssert((pRC->pLoadRqst != NULL));
431 pRC->pLoadRqst->status = LRS_INITIAL;
435 idp->setup.freeFunc(pCrslInfo);
439 DSC_RootCrslAbortLoadRequest(idp, pRC);
Header defining RootCarousel module - common code betweeen Update Carousel and Object Carousel...
P_RootCarousel DSC_RootCrslListFindById(P_LLControl plcCarousels, U16BIT serviceId, U32BIT couId)
Find Carousel from ID's.
E_DscError DSC_RootCrslBootCarousel(P_DsmCoreInst idp, P_RootCarousel pRC, P_CarouselInfo pCarouselInfo)
Request DSI for booting carousel, since info is available.
Header to the objectCarousel module.
E_DscError DSC_RootCrslAcquireRestart(P_DsmCoreInst idp, P_RootCarousel pRC)
Restart section filters.
Implementation of the Update Carousel module.
Header to the 'module' module - Functions/methods for creating/destroying and managing attributes of ...