57 U32BIT taggedProfilesCount;
58 U32BIT profileDataLength;
63 dsmAssert((mpIorData != NULL));
64 dsmAssert((pIorTypeId != NULL));
65 dsmAssert((pLocation != NULL));
66 dsmAssert((pTap != NULL));
69 MEMPTR_OPEN( mpIorData, mpIor );
78 ADV_UINT32_L2CHK( mpIor, ui32, ui32 == 4,
79 dsmDP2((
"DATA ERROR: IOR typeIdLength (!= 4) = %u\n", ui32)),
83 READ_UINT32( mpIor, *pIorTypeId );
86 READ_UINT32_L2CHK( mpIor, taggedProfilesCount, taggedProfilesCount >= 1,
87 dsmDP2((
"DATA ERROR: IOR taggedProfilesCount (< 1) = %u\n",
88 taggedProfilesCount)),
95 READ_UINT32( mpIor, profileIdTag );
97 pLocation->uiBindingTag = profileIdTag;
101 if (profileIdTag == TAG_BIOP)
104 ADV_UINT32_L2CHK( mpIor, ui32, ui32 >=
105 (2 + MIN_OBJ_LOCATION_LEN + MIN_CONN_BINDER_LEN),
106 dsmDP2((
"DATA ERROR: IOR TAG_BIOP profileDataLength = %u\n", ui32)),
107 goto _return_False );
111 ADV_UINT8_L1CHK( mpIor, ui8, ui8 == 0,
112 dsmDP2((
"DATA ERROR: IOR TAG_BIOP byteOrder = %u\n", ui8)),
113 goto _return_False );
117 ADV_UINT8_L1CHK( mpIor, ui8, ui8 >= 1,
118 dsmDP2((
"DATA ERROR: IOR TAG_BIOP liteComponentsCount (< 1) = %u\n", ui8)),
119 goto _return_False );
125 READ_UINT32_L0CHK( mpIor, ui32, ui32 == TAG_OBJECT_LOCATION,
126 dsmDP2((
"DATA ERROR: IOR TAG_BIOP 1st componentIdTag (!= ObjectLocation) = %u\n", ui32)),
127 goto _return_False );
130 ADV_UINT8_L2CHK( mpIor, ui8, ui8 >= MIN_OBJLOC_COMPONENT_DATA_LEN,
131 dsmDP2((
"DATA ERROR: IOR ObjectLocation componentDataLength = %u\n", ui8)),
132 goto _return_False );
135 READ_UINT32( mpIor, pLocation->carouselId );
138 READ_UINT16( mpIor, pLocation->moduleId );
141 ADV_UINT16_L2CHK( mpIor, ui16, ui16 == 0x0100,
142 dsmDP2((
"DATA ERROR: IOR ObjectLocation protocol version (!=0x0100) = %u\n", ui16)),
143 goto _return_False );
146 READ_OBJECT_KEY( mpIor, pLocation->objectKey, keyValid );
149 dsmDP2((
"DATA ERROR: IOR ObjectLocation objectKey invalid\n"));
157 READ_UINT32_L0CHK( mpIor, ui32, ui32 == TAG_CONN_BINDER,
158 dsmDP2((
"DATA ERROR: IOR TAG_BIOP 2nd componentIdTag (!= ConnBinder) = %u\n", ui32)),
159 goto _return_False );
162 ADV_UINT8_L2CHK( mpIor, ui8, ui8 >= MIN_CONBIND_COMPONENT_DATA_LEN,
163 dsmDP2((
"DATA ERROR: IOR ConnBinder componentDataLength = %u\n", ui8)),
164 goto _return_False );
168 ADV_UINT8_L1CHK( mpIor, ui8, ui8 >= 1,
169 dsmDP2((
"DATA ERROR: IOR ConnBinder tapsCount (< 1) = %u\n", ui8)),
170 goto _return_False );
176 READ_UINT16( mpIor, pTap->id );
180 READ_UINT16_L0CHK( mpIor, ui16, ui16 == BIOP_DELIVERY_PARA_USE,
181 dsmDP2((
"DATA ERROR: IOR ConnBinder 1st tapUse (!= BIOP_DELIVERY_PARA_USE) = %u\n", ui16)),
182 goto _return_False );
185 READ_UINT16( mpIor, pTap->associationTag );
188 ADV_UINT8_L2CHK( mpIor, ui8, ui8 == 0x0A,
189 dsmDP2((
"DATA ERROR: IOR ConnBinder tap selectorLength (!= 10) = %u\n", ui8)),
190 goto _return_False );
193 ADV_UINT16_L2CHK( mpIor, ui16, ui16 == 0x0001,
194 dsmDP2((
"DATA ERROR: IOR ConnBinder tap selectorType (!= 1) = %u\n", ui16)),
195 goto _return_False );
198 READ_UINT32( mpIor, pTap->transactionId );
201 READ_UINT32( mpIor, pTap->timeout );
203 else if (profileIdTag == TAG_LITE_OPTIONS)
205 U8BIT *pWriteNSAPaddr = NULL;
209 SET_POS_REL( mpIor, 4 );
216 ADV_UINT8_L1CHK( mpIor, ui8, ui8 == 0,
217 dsmDP2((
"DATA ERROR: IOR TAG_BIOP byteOrder = %u\n", ui8)),
218 goto _return_False );
222 ADV_UINT8_L1CHK( mpIor, ui8, ui8 >= 1,
223 dsmDP2((
"DATA ERROR: IOR TAG_BIOP liteComponentsCount (< 1) = %u\n", ui8)),
224 goto _return_False );
230 READ_UINT32_L0CHK( mpIor, ui32, ui32 == TAG_SERVICE_LOCATION,
231 dsmDP2((
"DATA ERROR: IOR TAG_LITE_OPTIONS 1st componentIdTag (!= ServiceLocation) = %u\n", ui32)),
232 goto _return_False );
235 READ_UINT8( mpIor, ui8 );
238 ADV_UINT8_L1CHK( mpIor, ui8, ui8 == 0x14,
239 dsmDP2((
"DATA ERROR: IOR TAG_LITE_OPTIONS bad NSAP address length (!= 0x14) = %u\n", ui8)),
240 goto _return_False );
242 pWriteNSAPaddr = &pLocation->dvbCarouselNSAPaddress[0];
247 READ_UINT8( mpIor, *(pWriteNSAPaddr++));
250 #ifdef READ_COSNAMING
252 U32BIT uiComponentCount;
255 READ_UINT32( mpIor, uiComponentCount);
256 pPathPtr = &pLocation->pathName[0];
257 for (i = 0; i < uiComponentCount; i++)
259 U32BIT uiNameId_lg = 0;
260 U32BIT uiKing_lg = 0;
264 READ_UINT32( mpIor, uiNameId_lg);
265 if (uiNameId_lg > MAX_PATH_NAME_SIZE)
267 uiNameId_lg = MAX_PATH_NAME_SIZE;
270 for (j = 0; j < uiNameId_lg; j++)
272 READ_UINT8( mpIor, ui8);
277 READ_UINT32( mpIor, uiKing_lg);
279 SET_POS_REL( mpIor, uiKing_lg);
286 dsmDP2((
"DATA ERROR: IOR - Invalid profileIdTag for DVB object carousel: %x\n",
293 length_used = (U16BIT)(mpIopProfile - mpIorStart);
294 mpIor = mpIopProfile;
295 for (profileIndex = 0; profileIndex < taggedProfilesCount; profileIndex++)
298 READ_UINT32( mpIor, profileIdTag );
301 READ_UINT32_L2CHK( mpIor, profileDataLength, profileDataLength >=
302 (2 + MIN_OBJ_LOCATION_LEN + MIN_CONN_BINDER_LEN),
303 dsmDP2((
"DATA ERROR: IOR TAG_BIOP profileDataLength = %u\n", ui32)),
304 goto _return_False );
307 SET_POS_REL( mpIor, profileDataLength );
310 length_used += 8 + profileDataLength;
326 MEMPTR_CLOSE( mpIor );
327 DEBUG_CHK( length_used != 0,
328 dsmDP1((
"ERROR: getIorInfo failure (invalid)\n")));