1
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
5
Copyright (c) 2001-2007 Octasic Inc.
9
This file contains the functions used to read information allowing the
10
API to know where all the features supported by this API version are
11
located in the chip's external memory.
13
This file is part of the Octasic OCT6100 GPL API . The OCT6100 GPL API is
14
free software; you can redistribute it and/or modify it under the terms of
15
the GNU General Public License as published by the Free Software Foundation;
16
either version 2 of the License, or (at your option) any later version.
18
The OCT6100 GPL API is distributed in the hope that it will be useful, but
19
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
20
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
23
You should have received a copy of the GNU General Public License
24
along with the OCT6100 GPL API; if not, write to the Free Software
25
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
27
$Octasic_Release: OCT612xAPI-01.00-PR49 $
29
$Octasic_Revision: 113 $
31
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
34
/***************************** INCLUDE FILES *******************************/
38
#include "oct6100api/oct6100_defines.h"
39
#include "oct6100api/oct6100_errors.h"
41
#include "oct6100api/oct6100_apiud.h"
42
#include "oct6100api/oct6100_tlv_inst.h"
43
#include "oct6100api/oct6100_chip_open_inst.h"
44
#include "oct6100api/oct6100_chip_stats_inst.h"
45
#include "oct6100api/oct6100_interrupts_inst.h"
46
#include "oct6100api/oct6100_remote_debug_inst.h"
47
#include "oct6100api/oct6100_debug_inst.h"
48
#include "oct6100api/oct6100_api_inst.h"
50
#include "oct6100api/oct6100_interrupts_pub.h"
52
#include "oct6100api/oct6100_channel_pub.h"
53
#include "oct6100api/oct6100_chip_open_pub.h"
55
#include "oct6100_chip_open_priv.h"
56
#include "oct6100_miscellaneous_priv.h"
57
#include "oct6100_tlv_priv.h"
59
/**************************** PRIVATE FUNCTIONS ****************************/
62
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
64
Function: Oct6100ApiProcessTlvRegion
66
Description: This function will read and interpret the TLV memory of the chip
67
to obtain memory offsets and features available of the image
70
The API will read this region until it finds a TLV type of 0 with
73
-------------------------------------------------------------------------------
74
| Argument | Description
75
-------------------------------------------------------------------------------
76
f_pApiInstance Pointer to API instance. This memory is used to keep
77
the present state of the chip and all its resources.
79
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
80
#if !SKIP_Oct6100ApiProcessTlvRegion
81
UINT32 Oct6100ApiProcessTlvRegion(
82
tPOCT6100_INSTANCE_API f_pApiInstance )
84
tOCT6100_READ_PARAMS ReadParams;
88
UINT32 ulTlvTypeField;
89
UINT32 ulTlvLengthField;
90
UINT32 ulTlvWritingTimeoutCount = 0;
91
UINT32 ulConditionFlag = TRUE;
93
ReadParams.pProcessContext = f_pApiInstance->pProcessContext;
95
ReadParams.ulUserChipId = f_pApiInstance->pSharedInfo->ChipConfig.ulUserChipId;
96
ReadParams.pusReadData = &usReadData;
98
/* Set the address of the first TLV type. */
99
ReadParams.ulReadAddress = cOCT6100_TLV_BASE;
100
ReadParams.ulReadAddress += 2;
102
/* Wait for the TLV configuration to be configured in memory. */
103
while ( ulConditionFlag )
105
/* Read the TLV write done flag. */
106
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
107
if ( ulResult != cOCT6100_ERR_OK )
110
if ( usReadData & 0x1 )
113
ulTlvWritingTimeoutCount++;
114
if ( ulTlvWritingTimeoutCount == 0x100000 )
115
return cOCT6100_ERR_TLV_TIMEOUT;
118
/*======================================================================*/
119
/* Read the first 16 bits of the TLV type. */
121
ReadParams.ulReadAddress += 2;
122
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
123
if ( ulResult != cOCT6100_ERR_OK )
127
ulTlvTypeField = usReadData << 16;
129
/* Read the last word of the TLV type. */
130
ReadParams.ulReadAddress += 2;
131
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
132
if ( ulResult != cOCT6100_ERR_OK )
136
ulTlvTypeField |= usReadData;
138
/*======================================================================*/
141
/*======================================================================*/
142
/* Now, read the TLV field length. */
144
ReadParams.ulReadAddress += 2;
145
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
146
if ( ulResult != cOCT6100_ERR_OK )
150
ulTlvLengthField = usReadData << 16;
152
/* Read the last word of the TLV length. */
153
ReadParams.ulReadAddress += 2;
154
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
155
if ( ulResult != cOCT6100_ERR_OK )
159
ulTlvLengthField |= usReadData;
161
/* Modify the address to point at the TLV value field. */
162
ReadParams.ulReadAddress += 2;
164
/*======================================================================*/
166
/* Read the TLV value until the end of TLV region is reached. */
167
while( !((ulTlvTypeField == 0) && (ulTlvLengthField == 0)) )
169
ulResult = Oct6100ApiInterpretTlvEntry( f_pApiInstance,
172
ReadParams.ulReadAddress );
173
if ( ulResult != cOCT6100_ERR_OK )
176
/* Set the address to after the TLV value. */
177
ReadParams.ulReadAddress += ulTlvLengthField;
179
/*======================================================================*/
180
/* Read the first 16 bits of the TLV type. */
182
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
183
if ( ulResult != cOCT6100_ERR_OK )
187
ulTlvTypeField = usReadData << 16;
189
/* Read the last word of the TLV type. */
190
ReadParams.ulReadAddress += 2;
191
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
192
if ( ulResult != cOCT6100_ERR_OK )
196
ulTlvTypeField |= usReadData;
198
/*======================================================================*/
201
/*======================================================================*/
202
/* Now, read the TLV field length. */
204
ReadParams.ulReadAddress += 2;
205
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
206
if ( ulResult != cOCT6100_ERR_OK )
210
ulTlvLengthField = usReadData << 16;
212
/* Read the last word of the TLV length. */
213
ReadParams.ulReadAddress += 2;
214
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
215
if ( ulResult != cOCT6100_ERR_OK )
219
ulTlvLengthField |= usReadData;
221
ReadParams.ulReadAddress += 2;
223
/*======================================================================*/
226
return cOCT6100_ERR_OK;
231
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
233
Function: Oct6100ApiInterpretTlvEntry
235
Description: This function will interpret a TLV entry from the chip. All
236
known TLV types by the API are exhaustively listed here.
238
-------------------------------------------------------------------------------
239
| Argument | Description
240
-------------------------------------------------------------------------------
241
f_pApiInstance Pointer to API instance. This memory is used to keep
242
the present state of the chip and all its resources.
244
f_ulTlvFieldType Type of the TLV field to interpret.
245
f_ulTlvFieldLength Byte length of the TLV field.
246
f_ulTlvValueAddress Address where the data of the TLV block starts.
248
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
249
#if !SKIP_Oct6100ApiInterpretTlvEntry
250
UINT32 Oct6100ApiInterpretTlvEntry(
251
IN OUT tPOCT6100_INSTANCE_API f_pApiInstance,
252
IN UINT32 f_ulTlvFieldType,
253
IN UINT32 f_ulTlvFieldLength,
254
IN UINT32 f_ulTlvValueAddress )
256
tOCT6100_READ_PARAMS ReadParams;
257
UINT32 ulResult = cOCT6100_ERR_OK;
260
UINT32 ulTempValue = 0;
262
ReadParams.pProcessContext = f_pApiInstance->pProcessContext;
264
ReadParams.ulUserChipId = f_pApiInstance->pSharedInfo->ChipConfig.ulUserChipId;
265
ReadParams.pusReadData = &usReadData;
267
/* Find out how to interpret the TLV value according to the TLV type. */
268
switch( f_ulTlvFieldType )
270
case cOCT6100_TLV_TYPE_VERSION_NUMBER:
271
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
272
cOCT6100_TLV_MIN_LENGTH_VERSION_NUMBER,
273
cOCT6100_TLV_MAX_LENGTH_VERSION_NUMBER );
274
if ( ulResult == cOCT6100_ERR_OK )
276
ReadParams.ulReadAddress = f_ulTlvValueAddress;
278
for( i = 0; i < (f_ulTlvFieldLength/2); i++ )
280
/* Perform the actual read. */
281
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
282
if ( ulResult != cOCT6100_ERR_OK )
285
f_pApiInstance->pSharedInfo->ImageInfo.szVersionNumber[ (i * 2) ] = (UINT8)((usReadData >> 8) & 0xFF);
286
f_pApiInstance->pSharedInfo->ImageInfo.szVersionNumber[ (i * 2) + 1 ] = (UINT8)((usReadData >> 0) & 0xFF);
288
/* Modify the address. */
289
ReadParams.ulReadAddress += 2;
294
case cOCT6100_TLV_TYPE_CUSTOMER_PROJECT_ID:
295
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
296
cOCT6100_TLV_MIN_LENGTH_CUSTOMER_PROJECT_ID,
297
cOCT6100_TLV_MAX_LENGTH_CUSTOMER_PROJECT_ID );
298
if ( ulResult == cOCT6100_ERR_OK )
300
/* Perform the actual read. */
301
ulResult = Oct6100ApiReadDword( f_pApiInstance,
303
&f_pApiInstance->pSharedInfo->ImageInfo.ulBuildId );
304
if ( ulResult != cOCT6100_ERR_OK )
309
case cOCT6100_TLV_TYPE_CH0_MAIN_BASE_ADDRESS:
310
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
311
cOCT6100_TLV_MIN_LENGTH_CH0_MAIN_BASE_ADDRESS,
312
cOCT6100_TLV_MAX_LENGTH_CH0_MAIN_BASE_ADDRESS );
313
if ( ulResult == cOCT6100_ERR_OK )
315
ulResult = Oct6100ApiReadDword( f_pApiInstance,
317
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainMemBase );
318
if ( ulResult != cOCT6100_ERR_OK )
321
f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainMemBase &= 0x0FFFFFFF;
323
/* Modify the base address to incorporate the external memory offset. */
324
f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainMemBase += cOCT6100_EXTERNAL_MEM_BASE_ADDRESS;
328
case cOCT6100_TLV_TYPE_CH_MAIN_SIZE:
329
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
330
cOCT6100_TLV_MIN_LENGTH_CH_MAIN_SIZE,
331
cOCT6100_TLV_MAX_LENGTH_CH_MAIN_SIZE );
332
if ( ulResult == cOCT6100_ERR_OK )
334
ulResult = Oct6100ApiReadDword( f_pApiInstance,
336
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainMemSize );
337
if ( ulResult != cOCT6100_ERR_OK )
342
case cOCT6100_TLV_TYPE_CH_MAIN_IO_OFFSET:
343
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
344
cOCT6100_TLV_MIN_LENGTH_CH_MAIN_IO_OFFSET,
345
cOCT6100_TLV_MAX_LENGTH_CH_MAIN_IO_OFFSET );
346
if ( ulResult == cOCT6100_ERR_OK )
348
ulResult = Oct6100ApiReadDword( f_pApiInstance,
350
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainIoMemOfst );
351
if ( ulResult != cOCT6100_ERR_OK )
356
case cOCT6100_TLV_TYPE_CH_MAIN_ZCB_OFFSET:
357
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
358
cOCT6100_TLV_MIN_LENGTH_CH_MAIN_ZCB_OFFSET,
359
cOCT6100_TLV_MAX_LENGTH_CH_MAIN_ZCB_OFFSET );
360
if ( ulResult == cOCT6100_ERR_OK )
362
ulResult = Oct6100ApiReadDword( f_pApiInstance,
364
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainRinCBMemOfst );
365
if ( ulResult != cOCT6100_ERR_OK )
370
case cOCT6100_TLV_TYPE_CH_MAIN_ZCB_SIZE:
371
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
372
cOCT6100_TLV_MIN_LENGTH_CH_MAIN_ZCB_SIZE,
373
cOCT6100_TLV_MAX_LENGTH_CH_MAIN_ZCB_SIZE );
374
if ( ulResult == cOCT6100_ERR_OK )
376
ulResult = Oct6100ApiReadDword( f_pApiInstance,
378
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainRinCBMemSize );
379
if ( ulResult != cOCT6100_ERR_OK )
384
case cOCT6100_TLV_TYPE_CH_MAIN_XCB_OFFSET:
385
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
386
cOCT6100_TLV_MIN_LENGTH_CH_MAIN_XCB_OFFSET,
387
cOCT6100_TLV_MAX_LENGTH_CH_MAIN_XCB_OFFSET );
388
if ( ulResult == cOCT6100_ERR_OK )
390
ulResult = Oct6100ApiReadDword( f_pApiInstance,
392
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainSinCBMemOfst );
393
if ( ulResult != cOCT6100_ERR_OK )
398
case cOCT6100_TLV_TYPE_CH_MAIN_XCB_SIZE:
399
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
400
cOCT6100_TLV_MIN_LENGTH_CH_MAIN_XCB_SIZE,
401
cOCT6100_TLV_MAX_LENGTH_CH_MAIN_XCB_SIZE );
402
if ( ulResult == cOCT6100_ERR_OK )
404
ulResult = Oct6100ApiReadDword( f_pApiInstance,
406
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainSinCBMemSize );
407
if ( ulResult != cOCT6100_ERR_OK )
412
case cOCT6100_TLV_TYPE_CH_MAIN_YCB_OFFSET:
413
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
414
cOCT6100_TLV_MIN_LENGTH_CH_MAIN_YCB_OFFSET,
415
cOCT6100_TLV_MAX_LENGTH_CH_MAIN_YCB_OFFSET );
416
if ( ulResult == cOCT6100_ERR_OK )
418
ulResult = Oct6100ApiReadDword( f_pApiInstance,
420
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainSoutCBMemOfst );
421
if ( ulResult != cOCT6100_ERR_OK )
426
case cOCT6100_TLV_TYPE_CH_MAIN_YCB_SIZE:
427
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
428
cOCT6100_TLV_MIN_LENGTH_CH_MAIN_YCB_SIZE,
429
cOCT6100_TLV_MAX_LENGTH_CH_MAIN_YCB_SIZE );
430
if ( ulResult == cOCT6100_ERR_OK )
432
ulResult = Oct6100ApiReadDword( f_pApiInstance,
434
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainSoutCBMemSize );
435
if ( ulResult != cOCT6100_ERR_OK )
440
case cOCT6100_TLV_TYPE_FREE_MEM_BASE_ADDRESS:
441
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
442
cOCT6100_TLV_MIN_LENGTH_FREE_MEM_BASE_ADDRESS,
443
cOCT6100_TLV_MAX_LENGTH_FREE_MEM_BASE_ADDRESS );
444
if ( ulResult == cOCT6100_ERR_OK )
446
ulResult = Oct6100ApiReadDword( f_pApiInstance,
448
&f_pApiInstance->pSharedInfo->MemoryMap.ulFreeMemBaseAddress );
449
if ( ulResult != cOCT6100_ERR_OK )
452
f_pApiInstance->pSharedInfo->MemoryMap.ulFreeMemBaseAddress &= 0x0FFFFFFF;
457
case cOCT6100_TLV_TYPE_CHAN_MAIN_IO_STATS_OFFSET:
458
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
459
cOCT6100_TLV_MIN_LENGTH_CHAN_MAIN_IO_STATS_OFFSET,
460
cOCT6100_TLV_MAX_LENGTH_CHAN_MAIN_IO_STATS_OFFSET );
461
if ( ulResult == cOCT6100_ERR_OK )
463
ulResult = Oct6100ApiReadDword( f_pApiInstance,
465
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainIoStatsOfst );
466
if ( ulResult != cOCT6100_ERR_OK )
471
case cOCT6100_TLV_TYPE_CHAN_MAIN_IO_STATS_SIZE:
472
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
473
cOCT6100_TLV_MIN_LENGTH_CHAN_MAIN_IO_STATS_OFFSET,
474
cOCT6100_TLV_MAX_LENGTH_CHAN_MAIN_IO_STATS_OFFSET );
475
if ( ulResult == cOCT6100_ERR_OK )
477
ulResult = Oct6100ApiReadDword( f_pApiInstance,
479
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainIoStatsSize );
480
if ( ulResult != cOCT6100_ERR_OK )
485
case cOCT6100_TLV_TYPE_CH_ROOT_CONF_OFFSET:
486
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
487
cOCT6100_TLV_MIN_LENGTH_CH_ROOT_CONF_OFFSET,
488
cOCT6100_TLV_MAX_LENGTH_CH_ROOT_CONF_OFFSET );
489
if ( ulResult == cOCT6100_ERR_OK )
491
ulResult = Oct6100ApiReadDword( f_pApiInstance,
493
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanRootConfOfst );
494
if ( ulResult != cOCT6100_ERR_OK )
500
case cOCT6100_TLV_TYPE_POA_CH_MAIN_ZPO_OFFSET:
501
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
502
cOCT6100_TLV_MIN_LENGTH_POA_CH_MAIN_ZPO_OFFSET,
503
cOCT6100_TLV_MAX_LENGTH_POA_CH_MAIN_ZPO_OFFSET );
504
if ( ulResult == cOCT6100_ERR_OK )
506
ulResult = Oct6100ApiReadDword( f_pApiInstance,
508
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainRinPlayoutMemOfst );
509
if ( ulResult != cOCT6100_ERR_OK )
514
case cOCT6100_TLV_TYPE_POA_CH_MAIN_ZPO_SIZE:
515
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
516
cOCT6100_TLV_MIN_LENGTH_POA_CH_MAIN_ZPO_SIZE,
517
cOCT6100_TLV_MAX_LENGTH_POA_CH_MAIN_ZPO_SIZE );
518
if ( ulResult == cOCT6100_ERR_OK )
520
ulResult = Oct6100ApiReadDword( f_pApiInstance,
522
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainRinPlayoutMemSize );
523
if ( ulResult != cOCT6100_ERR_OK )
528
case cOCT6100_TLV_TYPE_POA_CH_MAIN_YPO_OFFSET:
529
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
530
cOCT6100_TLV_MIN_LENGTH_POA_CH_MAIN_YPO_OFFSET,
531
cOCT6100_TLV_MAX_LENGTH_POA_CH_MAIN_YPO_OFFSET );
532
if ( ulResult == cOCT6100_ERR_OK )
534
ulResult = Oct6100ApiReadDword( f_pApiInstance,
536
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainSoutPlayoutMemOfst );
540
case cOCT6100_TLV_TYPE_POA_CH_MAIN_YPO_SIZE:
541
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
542
cOCT6100_TLV_MIN_LENGTH_POA_CH_MAIN_YPO_SIZE,
543
cOCT6100_TLV_MAX_LENGTH_POA_CH_MAIN_YPO_SIZE );
544
if ( ulResult == cOCT6100_ERR_OK )
546
ulResult = Oct6100ApiReadDword( f_pApiInstance,
548
&f_pApiInstance->pSharedInfo->MemoryMap.ulChanMainSoutPlayoutMemSize );
552
case cOCT6100_TLV_TYPE_POA_BOFF_RW_ZWP:
553
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
554
cOCT6100_TLV_MIN_LENGTH_POA_BOFF_RW_ZWP,
555
cOCT6100_TLV_MAX_LENGTH_POA_BOFF_RW_ZWP );
556
if ( ulResult == cOCT6100_ERR_OK )
558
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
560
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutRinWritePtrOfst );
564
case cOCT6100_TLV_TYPE_POA_BOFF_RW_ZIS:
565
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
566
cOCT6100_TLV_MIN_LENGTH_POA_BOFF_RW_ZIS,
567
cOCT6100_TLV_MAX_LENGTH_POA_BOFF_RW_ZIS );
568
if ( ulResult == cOCT6100_ERR_OK )
570
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
572
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutRinIgnoreSkipCleanOfst );
576
case cOCT6100_TLV_TYPE_POA_BOFF_RW_ZSP:
577
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
578
cOCT6100_TLV_MIN_LENGTH_POA_BOFF_RW_ZSP,
579
cOCT6100_TLV_MAX_LENGTH_POA_BOFF_RW_ZSP );
580
if ( ulResult == cOCT6100_ERR_OK )
582
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
584
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutRinSkipPtrOfst );
588
case cOCT6100_TLV_TYPE_POA_BOFF_RW_YWP:
589
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
590
cOCT6100_TLV_MIN_LENGTH_POA_BOFF_RW_YWP,
591
cOCT6100_TLV_MAX_LENGTH_POA_BOFF_RW_YWP );
592
if ( ulResult == cOCT6100_ERR_OK )
594
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
596
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutSoutWritePtrOfst );
600
case cOCT6100_TLV_TYPE_POA_BOFF_RW_YIS:
601
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
602
cOCT6100_TLV_MIN_LENGTH_POA_BOFF_RW_YIS,
603
cOCT6100_TLV_MAX_LENGTH_POA_BOFF_RW_YIS );
604
if ( ulResult == cOCT6100_ERR_OK )
606
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
608
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutSoutIgnoreSkipCleanOfst );
612
case cOCT6100_TLV_TYPE_POA_BOFF_RW_YSP:
613
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
614
cOCT6100_TLV_MIN_LENGTH_POA_BOFF_RW_YSP,
615
cOCT6100_TLV_MAX_LENGTH_POA_BOFF_RW_YSP );
616
if ( ulResult == cOCT6100_ERR_OK )
618
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
620
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutSoutSkipPtrOfst );
624
case cOCT6100_TLV_TYPE_POA_BOFF_RO_ZRP:
625
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
626
cOCT6100_TLV_MIN_LENGTH_POA_BOFF_RO_ZRP,
627
cOCT6100_TLV_MAX_LENGTH_POA_BOFF_RO_ZRP );
628
if ( ulResult == cOCT6100_ERR_OK )
630
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
632
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutRinReadPtrOfst );
636
case cOCT6100_TLV_TYPE_POA_BOFF_RO_YRP:
637
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
638
cOCT6100_TLV_MIN_LENGTH_POA_BOFF_RO_YRP,
639
cOCT6100_TLV_MAX_LENGTH_POA_BOFF_RO_YRP );
640
if ( ulResult == cOCT6100_ERR_OK )
642
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
644
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutSoutReadPtrOfst );
648
case cOCT6100_TLV_TYPE_CNR_CONF_BOFF_RW_ENABLE:
649
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
650
cOCT6100_TLV_MIN_LENGTH_CNR_CONF_BOFF_RW_ENABLE,
651
cOCT6100_TLV_MAX_LENGTH_CNR_CONF_BOFF_RW_ENABLE );
652
if ( ulResult == cOCT6100_ERR_OK )
654
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
656
&f_pApiInstance->pSharedInfo->MemoryMap.ConferencingNoiseReductionOfst );
660
case cOCT6100_TLV_TYPE_ANR_CONF_BOFF_RW_ENABLE:
661
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
662
cOCT6100_TLV_MIN_LENGTH_ANR_CONF_BOFF_RW_ENABLE,
663
cOCT6100_TLV_MAX_LENGTH_ANR_CONF_BOFF_RW_ENABLE );
664
if ( ulResult == cOCT6100_ERR_OK )
666
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
668
&f_pApiInstance->pSharedInfo->MemoryMap.AdaptiveNoiseReductionOfst );
672
case cOCT6100_TLV_TYPE_HZ_CONF_BOFF_RW_ENABLE:
673
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
674
cOCT6100_TLV_MIN_LENGTH_HZ_CONF_BOFF_RW_ENABLE,
675
cOCT6100_TLV_MAX_LENGTH_HZ_CONF_BOFF_RW_ENABLE );
676
if ( ulResult == cOCT6100_ERR_OK )
678
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
680
&f_pApiInstance->pSharedInfo->MemoryMap.RinDcOffsetRemovalOfst );
682
/* Set flag indicating that the feature is present.*/
683
f_pApiInstance->pSharedInfo->ImageInfo.fRinDcOffsetRemoval = TRUE;
686
case cOCT6100_TLV_TYPE_HX_CONF_BOFF_RW_ENABLE:
687
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
688
cOCT6100_TLV_MIN_LENGTH_HX_CONF_BOFF_RW_ENABLE,
689
cOCT6100_TLV_MAX_LENGTH_HX_CONF_BOFF_RW_ENABLE );
690
if ( ulResult == cOCT6100_ERR_OK )
692
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
694
&f_pApiInstance->pSharedInfo->MemoryMap.SinDcOffsetRemovalOfst );
696
/* Set flag indicating that the feature is present.*/
697
f_pApiInstance->pSharedInfo->ImageInfo.fSinDcOffsetRemoval = TRUE;
700
case cOCT6100_TLV_TYPE_LCA_Z_CONF_BOFF_RW_GAIN:
701
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
702
cOCT6100_TLV_MIN_LENGTH_LCA_Z_CONF_BOFF_RW_GAIN,
703
cOCT6100_TLV_MAX_LENGTH_LCA_Z_CONF_BOFF_RW_GAIN );
704
if ( ulResult == cOCT6100_ERR_OK )
706
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
708
&f_pApiInstance->pSharedInfo->MemoryMap.RinLevelControlOfst );
712
case cOCT6100_TLV_TYPE_LCA_Y_CONF_BOFF_RW_GAIN:
713
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
714
cOCT6100_TLV_MIN_LENGTH_LCA_Y_CONF_BOFF_RW_GAIN,
715
cOCT6100_TLV_MAX_LENGTH_LCA_Y_CONF_BOFF_RW_GAIN );
716
if ( ulResult == cOCT6100_ERR_OK )
718
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
720
&f_pApiInstance->pSharedInfo->MemoryMap.SoutLevelControlOfst );
724
case cOCT6100_TLV_TYPE_CNA_CONF_BOFF_RW_ENABLE:
725
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
726
cOCT6100_TLV_MIN_LENGTH_CNA_CONF_BOFF_RW_ENABLE,
727
cOCT6100_TLV_MAX_LENGTH_CNA_CONF_BOFF_RW_ENABLE );
728
if ( ulResult == cOCT6100_ERR_OK )
730
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
732
&f_pApiInstance->pSharedInfo->MemoryMap.ComfortNoiseModeOfst );
734
/* Set flag indicating that the feature is present.*/
735
f_pApiInstance->pSharedInfo->ImageInfo.fComfortNoise = TRUE;
738
case cOCT6100_TLV_TYPE_NOA_CONF_BOFF_RW_ENABLE:
739
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
740
cOCT6100_TLV_MIN_LENGTH_NOA_CONF_BOFF_RW_ENABLE,
741
cOCT6100_TLV_MAX_LENGTH_NOA_CONF_BOFF_RW_ENABLE );
742
if ( ulResult == cOCT6100_ERR_OK )
744
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
746
&f_pApiInstance->pSharedInfo->MemoryMap.NlpControlFieldOfst );
748
/* Set flag indicating that the feature is present.*/
749
f_pApiInstance->pSharedInfo->ImageInfo.fNlpControl = TRUE;
752
case cOCT6100_TLV_TYPE_VFA_CONF_BOFF_RW_ENABLE:
753
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
754
cOCT6100_TLV_MIN_LENGTH_VFA_CONF_BOFF_RW_ENABLE,
755
cOCT6100_TLV_MAX_LENGTH_VFA_CONF_BOFF_RW_ENABLE );
756
if ( ulResult == cOCT6100_ERR_OK )
758
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
760
&f_pApiInstance->pSharedInfo->MemoryMap.VadControlFieldOfst );
762
/* Set flag indicating that the feature is present.*/
763
f_pApiInstance->pSharedInfo->ImageInfo.fSilenceSuppression = TRUE;
766
case cOCT6100_TLV_TYPE_TLA_MAIN_IO_BOFF_RW_TAIL_DISP:
767
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
768
cOCT6100_TLV_MIN_LENGTH_TLA_MAIN_IO_BOFF_RW_TAIL_DISP,
769
cOCT6100_TLV_MAX_LENGTH_TLA_MAIN_IO_BOFF_RW_TAIL_DISP );
770
if ( ulResult == cOCT6100_ERR_OK )
772
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
774
&f_pApiInstance->pSharedInfo->MemoryMap.PouchTailDisplOfst );
778
case cOCT6100_TLV_TYPE_BOOTA_POUCH_BOFF_RW_BOOT_INST:
779
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
780
cOCT6100_TLV_MIN_LENGTH_BOOTA_POUCH_BOFF_RW_BOOT_INST,
781
cOCT6100_TLV_MAX_LENGTH_BOOTA_POUCH_BOFF_RW_BOOT_INST );
782
if ( ulResult == cOCT6100_ERR_OK )
784
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
786
&f_pApiInstance->pSharedInfo->MemoryMap.PouchBootInstructionOfst );
790
case cOCT6100_TLV_TYPE_BOOTA_POUCH_BOFF_RW_BOOT_RESULT:
791
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
792
cOCT6100_TLV_MIN_LENGTH_BOOTA_POUCH_BOFF_RW_BOOT_RESULT,
793
cOCT6100_TLV_MAX_LENGTH_BOOTA_POUCH_BOFF_RW_BOOT_RESULT );
794
if ( ulResult == cOCT6100_ERR_OK )
796
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
798
&f_pApiInstance->pSharedInfo->MemoryMap.PouchBootResultOfst );
802
case cOCT6100_TLV_TYPE_TDM_CONF_BOFF_RW_ENABLE:
803
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
804
cOCT6100_TLV_MIN_LENGTH_TDM_CONF_BOFF_RW_ENABLE,
805
cOCT6100_TLV_MAX_LENGTH_TDM_CONF_BOFF_RW_ENABLE );
806
if ( ulResult == cOCT6100_ERR_OK )
808
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
810
&f_pApiInstance->pSharedInfo->MemoryMap.ToneDisablerControlOfst );
813
f_pApiInstance->pSharedInfo->ImageInfo.fToneDisabler = TRUE;
816
case cOCT6100_TLV_TYPE_DIS_CONF_BOFF_RW_ENABLE:
817
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
818
cOCT6100_TLV_MIN_LENGTH_DIS_CONF_BOFF_RW_ENABLE,
819
cOCT6100_TLV_MAX_LENGTH_DIS_CONF_BOFF_RW_ENABLE );
820
if ( ulResult == cOCT6100_ERR_OK )
822
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
824
&f_pApiInstance->pSharedInfo->MemoryMap.TailDisplEnableOfst );
827
f_pApiInstance->pSharedInfo->ImageInfo.fTailDisplacement = TRUE;
830
case cOCT6100_TLV_TYPE_NT_CONF_BOFF_RW_ENABLE:
831
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
832
cOCT6100_TLV_MIN_LENGTH_NT_CONF_BOFF_RW_ENABLE,
833
cOCT6100_TLV_MAX_LENGTH_NT_CONF_BOFF_RW_ENABLE );
834
if ( ulResult == cOCT6100_ERR_OK )
836
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
838
&f_pApiInstance->pSharedInfo->MemoryMap.NlpTrivialFieldOfst );
843
case cOCT6100_TLV_TYPE_DEBUG_CHAN_INDEX_VALUE:
844
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
845
cOCT6100_TLV_MIN_LENGTH_DEBUG_CHAN_INDEX_VALUE,
846
cOCT6100_TLV_MAX_LENGTH_DEBUG_CHAN_INDEX_VALUE );
847
if ( ulResult == cOCT6100_ERR_OK )
849
ulResult = Oct6100ApiReadDword( f_pApiInstance,
854
f_pApiInstance->pSharedInfo->DebugInfo.usRecordMemIndex = (UINT16)( ulTempValue & 0xFFFF );
858
case cOCT6100_TLV_TYPE_ADPCM_ENABLE:
859
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
860
cOCT6100_TLV_MIN_LENGTH_ADPCM_ENABLE,
861
cOCT6100_TLV_MAX_LENGTH_ADPCM_ENABLE );
862
if ( ulResult == cOCT6100_ERR_OK )
864
ulResult = Oct6100ApiReadDword( f_pApiInstance,
869
if ( ulTempValue == 0 )
870
f_pApiInstance->pSharedInfo->ImageInfo.fAdpcm = FALSE;
872
f_pApiInstance->pSharedInfo->ImageInfo.fAdpcm = TRUE;
876
case cOCT6100_TLV_TYPE_CONFERENCING_ENABLE:
877
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
878
cOCT6100_TLV_MIN_LENGTH_CONFERENCING_ENABLE,
879
cOCT6100_TLV_MAX_LENGTH_CONFERENCING_ENABLE );
880
if ( ulResult == cOCT6100_ERR_OK )
882
ulResult = Oct6100ApiReadDword( f_pApiInstance,
887
if ( ulTempValue == 0 )
888
f_pApiInstance->pSharedInfo->ImageInfo.fConferencing = FALSE;
890
f_pApiInstance->pSharedInfo->ImageInfo.fConferencing = TRUE;
894
case cOCT6100_TLV_TYPE_TONE_DETECTOR_PROFILE:
895
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
896
cOCT6100_TLV_MIN_LENGTH_TONE_DETECTOR_PROFILE,
897
cOCT6100_TLV_MIN_LENGTH_TONE_DETECTOR_PROFILE );
898
if ( ulResult == cOCT6100_ERR_OK )
900
ulResult = Oct6100ApiReadDword( f_pApiInstance,
902
&f_pApiInstance->pSharedInfo->ImageInfo.ulToneProfileNumber );
907
case cOCT6100_TLV_TYPE_MAX_TAIL_DISPLACEMENT:
908
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
909
cOCT6100_TLV_MIN_LENGTH_MAX_TAIL_DISPLACEMENT,
910
cOCT6100_TLV_MAX_LENGTH_MAX_TAIL_DISPLACEMENT );
911
if ( ulResult == cOCT6100_ERR_OK )
913
UINT32 ulTailDispTempValue;
914
ulResult = Oct6100ApiReadDword( f_pApiInstance,
916
&ulTailDispTempValue );
918
ulTailDispTempValue += 1; /* Convert the value into milliseconds.*/
919
ulTailDispTempValue *= 16; /* value was given in multiple of 16 ms. */
921
if ( ulTailDispTempValue >= 128 )
922
f_pApiInstance->pSharedInfo->ImageInfo.usMaxTailDisplacement = (UINT16)( ulTailDispTempValue - 128 );
924
f_pApiInstance->pSharedInfo->ImageInfo.usMaxTailDisplacement = 0;
930
case cOCT6100_TLV_TYPE_AEC_CONF_BOFF_RW_ENABLE:
931
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
932
cOCT6100_TLV_MIN_LENGTH_AEC_CONF_BOFF_RW_ENABLE,
933
cOCT6100_TLV_MAX_LENGTH_AEC_CONF_BOFF_RW_ENABLE );
934
if ( ulResult == cOCT6100_ERR_OK )
936
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
938
&f_pApiInstance->pSharedInfo->MemoryMap.AecFieldOfst );
942
f_pApiInstance->pSharedInfo->ImageInfo.fAecEnabled = TRUE;
944
/* Acoustic echo cancellation available! */
945
f_pApiInstance->pSharedInfo->ImageInfo.fAcousticEcho = TRUE;
949
case cOCT6100_TLV_TYPE_PCM_LEAK_CONF_BOFF_RW:
950
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
951
cOCT6100_TLV_MIN_LENGTH_PCM_LEAK_CONF_BOFF_RW,
952
cOCT6100_TLV_MAX_LENGTH_PCM_LEAK_CONF_BOFF_RW );
953
if ( ulResult == cOCT6100_ERR_OK )
955
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
957
&f_pApiInstance->pSharedInfo->MemoryMap.PcmLeakFieldOfst );
960
f_pApiInstance->pSharedInfo->ImageInfo.fNonLinearityBehaviorA = TRUE;
963
case cOCT6100_TLV_TYPE_DEFAULT_ERL_CONF_BOFF_RW:
964
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
965
cOCT6100_TLV_MIN_LENGTH_DEFAULT_ERL_CONF_BOFF_RW,
966
cOCT6100_TLV_MAX_LENGTH_DEFAULT_ERL_CONF_BOFF_RW );
967
if ( ulResult == cOCT6100_ERR_OK )
969
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
971
&f_pApiInstance->pSharedInfo->MemoryMap.DefaultErlFieldOfst );
975
f_pApiInstance->pSharedInfo->ImageInfo.fDefaultErl = TRUE;
979
case cOCT6100_TLV_TYPE_TONE_REM_CONF_BOFF_RW_ENABLE:
980
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
981
cOCT6100_TLV_MIN_LENGTH_TONE_REM_CONF_BOFF_RW_ENABLE,
982
cOCT6100_TLV_MAX_LENGTH_TONE_REM_CONF_BOFF_RW_ENABLE );
983
if ( ulResult == cOCT6100_ERR_OK )
985
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
987
&f_pApiInstance->pSharedInfo->MemoryMap.ToneRemovalFieldOfst );
991
f_pApiInstance->pSharedInfo->ImageInfo.fToneRemoval = TRUE;
997
case cOCT6100_TLV_TYPE_TLA_MAIN_IO_BOFF_RW_MAX_ECHO_POINT:
998
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
999
cOCT6100_TLV_MIN_LENGTH_TLA_MAIN_IO_BOFF_RW_MAX_ECHO_POINT,
1000
cOCT6100_TLV_MAX_LENGTH_TLA_MAIN_IO_BOFF_RW_MAX_ECHO_POINT );
1001
if ( ulResult == cOCT6100_ERR_OK )
1003
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1004
f_ulTlvValueAddress,
1005
&f_pApiInstance->pSharedInfo->MemoryMap.ChanMainIoMaxEchoPointOfst );
1009
f_pApiInstance->pSharedInfo->ImageInfo.fMaxEchoPoint = TRUE;
1013
case cOCT6100_TLV_TYPE_NLP_CONV_CAP_CONF_BOFF_RW:
1014
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1015
cOCT6100_TLV_MIN_LENGTH_NLP_CONV_CAP_CONF_BOFF_RW,
1016
cOCT6100_TLV_MAX_LENGTH_NLP_CONV_CAP_CONF_BOFF_RW );
1017
if ( ulResult == cOCT6100_ERR_OK )
1019
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1020
f_ulTlvValueAddress,
1021
&f_pApiInstance->pSharedInfo->MemoryMap.NlpConvCapFieldOfst );
1025
f_pApiInstance->pSharedInfo->ImageInfo.fNonLinearityBehaviorB = TRUE;
1029
case cOCT6100_TLV_TYPE_MATRIX_EVENT_SIZE:
1030
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1031
cOCT6100_TLV_MIN_LENGTH_MATRIX_EVENT_SIZE,
1032
cOCT6100_TLV_MAX_LENGTH_MATRIX_EVENT_SIZE );
1033
if ( ulResult == cOCT6100_ERR_OK )
1035
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1036
f_ulTlvValueAddress,
1037
&f_pApiInstance->pSharedInfo->DebugInfo.ulDebugEventSize );
1042
case cOCT6100_TLV_TYPE_CNR_RW_ENABLE:
1043
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1044
cOCT6100_TLV_MIN_LENGTH_CNR_RW_ENABLE,
1045
cOCT6100_TLV_MAX_LENGTH_CNR_RW_ENABLE );
1046
if ( ulResult == cOCT6100_ERR_OK )
1048
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1049
f_ulTlvValueAddress,
1052
f_pApiInstance->pSharedInfo->ImageInfo.fConferencingNoiseReduction = (UINT8)( ulTempValue & 0xFF );
1054
if ( f_pApiInstance->pSharedInfo->ImageInfo.fConferencingNoiseReduction == TRUE )
1056
/* Set flag indicating that the dominant speaker feature is present. */
1057
f_pApiInstance->pSharedInfo->ImageInfo.fDominantSpeakerEnabled = TRUE;
1063
case cOCT6100_TLV_TYPE_MAX_TAIL_LENGTH_RW_ENABLE:
1064
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1065
cOCT6100_TLV_MIN_LENGTH_MAX_TAIL_LENGTH_RW_ENABLE,
1066
cOCT6100_TLV_MAX_LENGTH_MAX_TAIL_LENGTH_RW_ENABLE );
1067
if ( ulResult == cOCT6100_ERR_OK )
1069
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1070
f_ulTlvValueAddress,
1073
f_pApiInstance->pSharedInfo->ImageInfo.usMaxTailLength = (UINT16)( ulTempValue & 0xFFFF );
1078
case cOCT6100_TLV_TYPE_MAX_NUMBER_OF_CHANNELS:
1079
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1080
cOCT6100_TLV_MIN_LENGTH_MAX_NUMBER_OF_CHANNELS,
1081
cOCT6100_TLV_MAX_LENGTH_MAX_NUMBER_OF_CHANNELS );
1082
if ( ulResult == cOCT6100_ERR_OK )
1084
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1085
f_ulTlvValueAddress,
1088
f_pApiInstance->pSharedInfo->ImageInfo.usMaxNumberOfChannels = (UINT16)( ulTempValue & 0xFFFF );
1093
case cOCT6100_TLV_TYPE_PLAYOUT_ENABLE:
1094
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1095
cOCT6100_TLV_MIN_LENGTH_PLAYOUT_ENABLE,
1096
cOCT6100_TLV_MAX_LENGTH_PLAYOUT_ENABLE );
1097
if ( ulResult == cOCT6100_ERR_OK )
1099
/* Set flag indicating that the feature is present. */
1100
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1101
f_ulTlvValueAddress,
1103
f_pApiInstance->pSharedInfo->ImageInfo.fBufferPlayout = (UINT8)( ulTempValue & 0xFF );
1108
case cOCT6100_TLV_TYPE_DOMINANT_SPEAKER_BOFF_RW_ENABLE:
1109
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1110
cOCT6100_TLV_MIN_LENGTH_DOMINANT_SPEAKER_BOFF_RW_ENABLE,
1111
cOCT6100_TLV_MAX_LENGTH_DOMINANT_SPEAKER_BOFF_RW_ENABLE );
1112
if ( ulResult == cOCT6100_ERR_OK )
1114
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1115
f_ulTlvValueAddress,
1116
&f_pApiInstance->pSharedInfo->MemoryMap.DominantSpeakerFieldOfst );
1121
case cOCT6100_TLV_TYPE_TAIL_DISP_CONF_BOFF_RW_ENABLE:
1122
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1123
cOCT6100_TLV_MIN_LENGTH_TAIL_DISP_CONF_BOFF_RW_ENABLE,
1124
cOCT6100_TLV_MAX_LENGTH_TAIL_DISP_CONF_BOFF_RW_ENABLE );
1125
if ( ulResult == cOCT6100_ERR_OK )
1127
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1128
f_ulTlvValueAddress,
1129
&f_pApiInstance->pSharedInfo->MemoryMap.PerChanTailDisplacementFieldOfst );
1131
f_pApiInstance->pSharedInfo->ImageInfo.fPerChannelTailDisplacement = TRUE;
1136
case cOCT6100_TLV_TYPE_ANR_RW_ENABLE:
1137
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1138
cOCT6100_TLV_MIN_LENGTH_ANR_RW_ENABLE,
1139
cOCT6100_TLV_MAX_LENGTH_ANR_RW_ENABLE );
1140
if ( ulResult == cOCT6100_ERR_OK )
1142
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1143
f_ulTlvValueAddress,
1146
f_pApiInstance->pSharedInfo->ImageInfo.fAdaptiveNoiseReduction = (UINT8)( ulTempValue & 0xFF );
1151
case cOCT6100_TLV_TYPE_MUSIC_PROTECTION_RW_ENABLE:
1152
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1153
cOCT6100_TLV_MIN_LENGTH_MUSIC_PROTECTION_RW_ENABLE,
1154
cOCT6100_TLV_MAX_LENGTH_MUSIC_PROTECTION_RW_ENABLE );
1155
if ( ulResult == cOCT6100_ERR_OK )
1157
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1158
f_ulTlvValueAddress,
1161
f_pApiInstance->pSharedInfo->ImageInfo.fMusicProtection = (UINT8)( ulTempValue & 0xFF );
1166
case cOCT6100_TLV_TYPE_AEC_DEFAULT_ERL_BOFF:
1167
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1168
cOCT6100_TLV_MIN_LENGTH_AEC_DEFAULT_ERL_BOFF_RW_ENABLE,
1169
cOCT6100_TLV_MAX_LENGTH_AEC_DEFAULT_ERL_BOFF_RW_ENABLE );
1170
if ( ulResult == cOCT6100_ERR_OK )
1172
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1173
f_ulTlvValueAddress,
1174
&f_pApiInstance->pSharedInfo->MemoryMap.AecDefaultErlFieldOfst );
1176
f_pApiInstance->pSharedInfo->ImageInfo.fAecDefaultErl = TRUE;
1181
case cOCT6100_TLV_TYPE_Z_ALC_TARGET_BOFF:
1183
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1184
cOCT6100_TLV_MIN_LENGTH_Z_ALC_TARGET_BOFF_RW_ENABLE,
1185
cOCT6100_TLV_MAX_LENGTH_Z_ALC_TARGET_BOFF_RW_ENABLE );
1186
if ( ulResult == cOCT6100_ERR_OK )
1188
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1189
f_ulTlvValueAddress,
1190
&f_pApiInstance->pSharedInfo->MemoryMap.RinAutoLevelControlTargetOfst );
1192
f_pApiInstance->pSharedInfo->ImageInfo.fRinAutoLevelControl = TRUE;
1197
case cOCT6100_TLV_TYPE_Y_ALC_TARGET_BOFF:
1199
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1200
cOCT6100_TLV_MIN_LENGTH_Y_ALC_TARGET_BOFF_RW_ENABLE,
1201
cOCT6100_TLV_MAX_LENGTH_Y_ALC_TARGET_BOFF_RW_ENABLE );
1202
if ( ulResult == cOCT6100_ERR_OK )
1204
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1205
f_ulTlvValueAddress,
1206
&f_pApiInstance->pSharedInfo->MemoryMap.SoutAutoLevelControlTargetOfst );
1208
f_pApiInstance->pSharedInfo->ImageInfo.fSoutAutoLevelControl = TRUE;
1213
case cOCT6100_TLV_TYPE_Z_HLC_TARGET_BOFF:
1215
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1216
cOCT6100_TLV_MIN_LENGTH_Z_HLC_TARGET_BOFF_RW_ENABLE,
1217
cOCT6100_TLV_MAX_LENGTH_Z_HLC_TARGET_BOFF_RW_ENABLE );
1218
if ( ulResult == cOCT6100_ERR_OK )
1220
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1221
f_ulTlvValueAddress,
1222
&f_pApiInstance->pSharedInfo->MemoryMap.RinHighLevelCompensationThresholdOfst );
1224
f_pApiInstance->pSharedInfo->ImageInfo.fRinHighLevelCompensation = TRUE;
1229
case cOCT6100_TLV_TYPE_Y_HLC_TARGET_BOFF:
1231
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1232
cOCT6100_TLV_MIN_LENGTH_Y_HLC_TARGET_BOFF_RW_ENABLE,
1233
cOCT6100_TLV_MAX_LENGTH_Y_HLC_TARGET_BOFF_RW_ENABLE );
1234
if ( ulResult == cOCT6100_ERR_OK )
1236
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1237
f_ulTlvValueAddress,
1238
&f_pApiInstance->pSharedInfo->MemoryMap.SoutHighLevelCompensationThresholdOfst );
1240
f_pApiInstance->pSharedInfo->ImageInfo.fSoutHighLevelCompensation = TRUE;
1245
case cOCT6100_TLV_TYPE_ALC_HLC_STATUS_BOFF:
1247
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1248
cOCT6100_TLV_MIN_LENGTH_ALC_HLC_STATUS_BOFF_RW_ENABLE,
1249
cOCT6100_TLV_MAX_LENGTH_ALC_HLC_STATUS_BOFF_RW_ENABLE );
1250
if ( ulResult == cOCT6100_ERR_OK )
1252
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1253
f_ulTlvValueAddress,
1254
&f_pApiInstance->pSharedInfo->MemoryMap.AlcHlcStatusOfst );
1256
f_pApiInstance->pSharedInfo->ImageInfo.fAlcHlcStatus = TRUE;
1261
case cOCT6100_TLV_TYPE_Z_PLAYOUT_HARD_SKIP_BOFF:
1263
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1264
cOCT6100_TLV_MIN_LENGTH_Z_PLAYOUT_HARD_SKIP_BOFF_RW,
1265
cOCT6100_TLV_MAX_LENGTH_Z_PLAYOUT_HARD_SKIP_BOFF_RW );
1266
if ( ulResult == cOCT6100_ERR_OK )
1268
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1269
f_ulTlvValueAddress,
1270
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutRinHardSkipOfst );
1272
f_pApiInstance->pSharedInfo->ImageInfo.fRinBufferPlayoutHardSkip = TRUE;
1277
case cOCT6100_TLV_TYPE_Y_PLAYOUT_HARD_SKIP_BOFF:
1279
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1280
cOCT6100_TLV_MIN_LENGTH_Y_PLAYOUT_HARD_SKIP_BOFF_RW,
1281
cOCT6100_TLV_MAX_LENGTH_Y_PLAYOUT_HARD_SKIP_BOFF_RW );
1282
if ( ulResult == cOCT6100_ERR_OK )
1284
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1285
f_ulTlvValueAddress,
1286
&f_pApiInstance->pSharedInfo->MemoryMap.PlayoutSoutHardSkipOfst );
1288
f_pApiInstance->pSharedInfo->ImageInfo.fSoutBufferPlayoutHardSkip = TRUE;
1293
case cOCT6100_TLV_TYPE_AFT_FIELD_BOFF:
1295
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1296
cOCT6100_TLV_MIN_LENGTH_AFT_FIELD_BOFF_RW,
1297
cOCT6100_TLV_MAX_LENGTH_AFT_FIELD_BOFF_RW );
1298
if ( ulResult == cOCT6100_ERR_OK )
1300
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1301
f_ulTlvValueAddress,
1302
&f_pApiInstance->pSharedInfo->MemoryMap.AftControlOfst );
1304
f_pApiInstance->pSharedInfo->ImageInfo.fAftControl = TRUE;
1309
case cOCT6100_TLV_TYPE_VOICE_DETECTED_STAT_BOFF:
1311
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1312
cOCT6100_TLV_MIN_LENGTH_VOICE_DETECTED_STAT_BOFF_RW,
1313
cOCT6100_TLV_MAX_LENGTH_VOICE_DETECTED_STAT_BOFF_RW );
1314
if ( ulResult == cOCT6100_ERR_OK )
1316
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1317
f_ulTlvValueAddress,
1318
&f_pApiInstance->pSharedInfo->MemoryMap.SinVoiceDetectedStatOfst );
1320
f_pApiInstance->pSharedInfo->ImageInfo.fSinVoiceDetectedStat = TRUE;
1325
case cOCT6100_TLV_TYPE_GAIN_APPLIED_RIN_STAT_BOFF:
1327
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1328
cOCT6100_TLV_MIN_LENGTH_GAIN_APPLIED_RIN_STAT_BOFF_RW,
1329
cOCT6100_TLV_MAX_LENGTH_GAIN_APPLIED_RIN_STAT_BOFF_RW );
1330
if ( ulResult == cOCT6100_ERR_OK )
1332
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1333
f_ulTlvValueAddress,
1334
&f_pApiInstance->pSharedInfo->MemoryMap.RinAppliedGainStatOfst );
1336
f_pApiInstance->pSharedInfo->ImageInfo.fRinAppliedGainStat = TRUE;
1341
case cOCT6100_TLV_TYPE_GAIN_APPLIED_SOUT_STAT_BOFF:
1343
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1344
cOCT6100_TLV_MIN_LENGTH_GAIN_APPLIED_SOUT_STAT_BOFF_RW,
1345
cOCT6100_TLV_MAX_LENGTH_GAIN_APPLIED_SOUT_STAT_BOFF_RW );
1346
if ( ulResult == cOCT6100_ERR_OK )
1348
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1349
f_ulTlvValueAddress,
1350
&f_pApiInstance->pSharedInfo->MemoryMap.SoutAppliedGainStatOfst );
1352
f_pApiInstance->pSharedInfo->ImageInfo.fSoutAppliedGainStat = TRUE;
1357
case cOCT6100_TLV_TYPE_MAX_ADAPT_ALE_BOFF:
1359
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1360
cOCT6100_TLV_MIN_LENGTH_MAX_ADAPT_ALE_BOFF_RW,
1361
cOCT6100_TLV_MAX_LENGTH_MAX_ADAPT_ALE_BOFF_RW );
1362
if ( ulResult == cOCT6100_ERR_OK )
1364
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1365
f_ulTlvValueAddress,
1366
&f_pApiInstance->pSharedInfo->MemoryMap.AdaptiveAleOfst );
1368
f_pApiInstance->pSharedInfo->ImageInfo.fListenerEnhancement = TRUE;
1373
case cOCT6100_TLV_TYPE_RIN_ANR_BOFF:
1375
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1376
cOCT6100_TLV_MIN_LENGTH_RIN_ANR_BOFF_RW,
1377
cOCT6100_TLV_MAX_LENGTH_RIN_ANR_BOFF_RW );
1378
if ( ulResult == cOCT6100_ERR_OK )
1380
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1381
f_ulTlvValueAddress,
1382
&f_pApiInstance->pSharedInfo->MemoryMap.RinAnrOfst );
1384
f_pApiInstance->pSharedInfo->ImageInfo.fRoutNoiseReduction = TRUE;
1388
case cOCT6100_TLV_TYPE_RIN_ANR_VALUE:
1390
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1391
cOCT6100_TLV_MIN_LENGTH_RIN_ANR_VALUE_RW,
1392
cOCT6100_TLV_MAX_LENGTH_RIN_ANR_VALUE_RW );
1393
if ( ulResult == cOCT6100_ERR_OK )
1395
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1396
f_ulTlvValueAddress,
1397
&f_pApiInstance->pSharedInfo->MemoryMap.RinAnrValOfst );
1399
f_pApiInstance->pSharedInfo->ImageInfo.fRoutNoiseReductionLevel = TRUE;
1403
case cOCT6100_TLV_TYPE_RIN_MUTE_BOFF:
1405
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1406
cOCT6100_TLV_MIN_LENGTH_RIN_MUTE_BOFF_RW,
1407
cOCT6100_TLV_MAX_LENGTH_RIN_MUTE_BOFF_RW );
1408
if ( ulResult == cOCT6100_ERR_OK )
1410
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1411
f_ulTlvValueAddress,
1412
&f_pApiInstance->pSharedInfo->MemoryMap.RinMuteOfst );
1414
f_pApiInstance->pSharedInfo->ImageInfo.fRinMute = TRUE;
1419
case cOCT6100_TLV_TYPE_SIN_MUTE_BOFF:
1421
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1422
cOCT6100_TLV_MIN_LENGTH_SIN_MUTE_BOFF_RW,
1423
cOCT6100_TLV_MAX_LENGTH_SIN_MUTE_BOFF_RW );
1424
if ( ulResult == cOCT6100_ERR_OK )
1426
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1427
f_ulTlvValueAddress,
1428
&f_pApiInstance->pSharedInfo->MemoryMap.SinMuteOfst );
1430
f_pApiInstance->pSharedInfo->ImageInfo.fSinMute = TRUE;
1435
case cOCT6100_TLV_TYPE_NUMBER_PLAYOUT_EVENTS:
1437
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1438
cOCT6100_TLV_MIN_LENGTH_NUMBER_PLAYOUT_EVENTS,
1439
cOCT6100_TLV_MAX_LENGTH_NUMBER_PLAYOUT_EVENTS );
1440
if ( ulResult == cOCT6100_ERR_OK )
1442
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1443
f_ulTlvValueAddress,
1446
f_pApiInstance->pSharedInfo->ImageInfo.byMaxNumberPlayoutEvents = (UINT8)( ulTempValue & 0xFF );
1451
case cOCT6100_TLV_TYPE_ANR_SNR_IMPROVEMENT_BOFF:
1453
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1454
cOCT6100_TLV_MIN_LENGTH_ANR_SNR_IMPROVEMENT_BOFF_RW,
1455
cOCT6100_TLV_MAX_LENGTH_ANR_SNR_IMPROVEMENT_BOFF_RW );
1456
if ( ulResult == cOCT6100_ERR_OK )
1458
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1459
f_ulTlvValueAddress,
1460
&f_pApiInstance->pSharedInfo->MemoryMap.AnrSnrEnhancementOfst );
1462
f_pApiInstance->pSharedInfo->ImageInfo.fAnrSnrEnhancement = TRUE;
1467
case cOCT6100_TLV_TYPE_ANR_AGRESSIVITY_BOFF:
1469
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1470
cOCT6100_TLV_MIN_LENGTH_ANR_AGRESSIVITY_BOFF_RW,
1471
cOCT6100_TLV_MAX_LENGTH_ANR_AGRESSIVITY_BOFF_RW );
1472
if ( ulResult == cOCT6100_ERR_OK )
1474
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1475
f_ulTlvValueAddress,
1476
&f_pApiInstance->pSharedInfo->MemoryMap.AnrVoiceNoiseSegregationOfst );
1478
f_pApiInstance->pSharedInfo->ImageInfo.fAnrVoiceNoiseSegregation = TRUE;
1483
case cOCT6100_TLV_TYPE_CHAN_TAIL_LENGTH_BOFF:
1485
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1486
cOCT6100_TLV_MIN_LENGTH_CHAN_TAIL_LENGTH_BOFF,
1487
cOCT6100_TLV_MAX_LENGTH_CHAN_TAIL_LENGTH_BOFF );
1488
if ( ulResult == cOCT6100_ERR_OK )
1490
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1491
f_ulTlvValueAddress,
1492
&f_pApiInstance->pSharedInfo->MemoryMap.PerChanTailLengthFieldOfst );
1494
f_pApiInstance->pSharedInfo->ImageInfo.fPerChannelTailLength = TRUE;
1499
case cOCT6100_TLV_TYPE_CHAN_VQE_TONE_DISABLING_BOFF:
1501
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1502
cOCT6100_TLV_MIN_LENGTH_CHAN_VQE_TONE_DIS_BOFF,
1503
cOCT6100_TLV_MAX_LENGTH_CHAN_VQE_TONE_DIS_BOFF );
1504
if ( ulResult == cOCT6100_ERR_OK )
1506
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1507
f_ulTlvValueAddress,
1508
&f_pApiInstance->pSharedInfo->MemoryMap.ToneDisablerVqeActivationDelayOfst );
1510
f_pApiInstance->pSharedInfo->ImageInfo.fToneDisablerVqeActivationDelay = TRUE;
1515
case cOCT6100_TLV_TYPE_AF_TAIL_DISP_VALUE_BOFF:
1517
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1518
cOCT6100_TLV_MIN_LENGTH_AF_TAIL_DISP_VALUE_BOFF,
1519
cOCT6100_TLV_MAX_LENGTH_AF_TAIL_DISP_VALUE_BOFF );
1520
if ( ulResult == cOCT6100_ERR_OK )
1522
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1523
f_ulTlvValueAddress,
1524
&f_pApiInstance->pSharedInfo->MemoryMap.AfTailDisplacementFieldOfst );
1526
f_pApiInstance->pSharedInfo->ImageInfo.fAfTailDisplacement = TRUE;
1532
case cOCT6100_TLV_TYPE_POUCH_COUNTER_BOFF:
1534
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1535
cOCT6100_TLV_MIN_LENGTH_POUCH_COUNTER_BOFF,
1536
cOCT6100_TLV_MAX_LENGTH_POUCH_COUNTER_BOFF );
1537
if ( ulResult == cOCT6100_ERR_OK )
1539
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1540
f_ulTlvValueAddress,
1541
&f_pApiInstance->pSharedInfo->MemoryMap.PouchCounterFieldOfst );
1543
f_pApiInstance->pSharedInfo->DebugInfo.fPouchCounter = TRUE;
1548
case cOCT6100_TLV_TYPE_AEC_TAIL_LENGTH_BOFF:
1550
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1551
cOCT6100_TLV_MIN_LENGTH_AEC_TAIL_BOFF,
1552
cOCT6100_TLV_MAX_LENGTH_AEC_TAIL_BOFF );
1553
if ( ulResult == cOCT6100_ERR_OK )
1555
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1556
f_ulTlvValueAddress,
1557
&f_pApiInstance->pSharedInfo->MemoryMap.AecTailLengthFieldOfst );
1559
f_pApiInstance->pSharedInfo->ImageInfo.fAecTailLength = TRUE;
1564
case cOCT6100_TLV_TYPE_MATRIX_DWORD_BASE:
1566
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1567
cOCT6100_TLV_MIN_LENGTH_MATRIX_DWORD_BASE,
1568
cOCT6100_TLV_MAX_LENGTH_MATRIX_DWORD_BASE );
1569
if ( ulResult == cOCT6100_ERR_OK )
1571
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1572
f_ulTlvValueAddress,
1573
&f_pApiInstance->pSharedInfo->DebugInfo.ulMatrixBaseAddress );
1575
/* Mask the upper bits set by the firmware. */
1576
f_pApiInstance->pSharedInfo->DebugInfo.ulMatrixBaseAddress &= 0x0FFFFFFF;
1578
/* Modify the base address to incorporate the external memory offset. */
1579
f_pApiInstance->pSharedInfo->DebugInfo.ulMatrixBaseAddress += cOCT6100_EXTERNAL_MEM_BASE_ADDRESS;
1584
case cOCT6100_TLV_TYPE_DEBUG_CHAN_STATS_BYTE_SIZE:
1586
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1587
cOCT6100_TLV_MIN_LENGTH_DEBUG_CHAN_STATS_BYTE_SIZE,
1588
cOCT6100_TLV_MAX_LENGTH_DEBUG_CHAN_STATS_BYTE_SIZE );
1589
if ( ulResult == cOCT6100_ERR_OK )
1591
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1592
f_ulTlvValueAddress,
1593
&f_pApiInstance->pSharedInfo->DebugInfo.ulDebugChanStatsByteSize );
1598
case cOCT6100_TLV_TYPE_DEBUG_CHAN_LITE_STATS_BYTE_SIZE:
1600
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1601
cOCT6100_TLV_MIN_LENGTH_DEBUG_CHAN_LITE_STATS_BYTE_SIZE,
1602
cOCT6100_TLV_MAX_LENGTH_DEBUG_CHAN_LITE_STATS_BYTE_SIZE );
1603
if ( ulResult == cOCT6100_ERR_OK )
1605
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1606
f_ulTlvValueAddress,
1607
&f_pApiInstance->pSharedInfo->DebugInfo.ulDebugChanLiteStatsByteSize );
1612
case cOCT6100_TLV_TYPE_HOT_CHANNEL_SELECT_DWORD_BASE:
1614
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1615
cOCT6100_TLV_MIN_LENGTH_HOT_CHANNEL_SELECT_DWORD_BASE,
1616
cOCT6100_TLV_MAX_LENGTH_HOT_CHANNEL_SELECT_DWORD_BASE );
1617
if ( ulResult == cOCT6100_ERR_OK )
1619
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1620
f_ulTlvValueAddress,
1621
&f_pApiInstance->pSharedInfo->DebugInfo.ulHotChannelSelectBaseAddress );
1626
case cOCT6100_TLV_TYPE_MATRIX_TIMESTAMP_DWORD_BASE:
1628
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1629
cOCT6100_TLV_MIN_LENGTH_TIMESTAMP_DWORD_BASE,
1630
cOCT6100_TLV_MAX_LENGTH_TIMESTAMP_DWORD_BASE );
1631
if ( ulResult == cOCT6100_ERR_OK )
1633
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1634
f_ulTlvValueAddress,
1635
&f_pApiInstance->pSharedInfo->DebugInfo.ulMatrixTimestampBaseAddress );
1640
case cOCT6100_TLV_TYPE_MATRIX_WP_DWORD_BASE:
1642
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1643
cOCT6100_TLV_MIN_LENGTH_MATRIX_WP_DWORD_BASE,
1644
cOCT6100_TLV_MAX_LENGTH_MATRIX_WP_DWORD_BASE );
1645
if ( ulResult == cOCT6100_ERR_OK )
1647
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1648
f_ulTlvValueAddress,
1649
&f_pApiInstance->pSharedInfo->DebugInfo.ulMatrixWpBaseAddress );
1654
case cOCT6100_TLV_TYPE_AF_WRITE_PTR_BYTE_OFFSET:
1656
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1657
cOCT6100_TLV_MIN_LENGTH_AF_WRITE_PTR_BYTE_OFFSET,
1658
cOCT6100_TLV_MAX_LENGTH_AF_WRITE_PTR_BYTE_OFFSET );
1659
if ( ulResult == cOCT6100_ERR_OK )
1661
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1662
f_ulTlvValueAddress,
1663
&f_pApiInstance->pSharedInfo->DebugInfo.ulAfWritePtrByteOffset );
1668
case cOCT6100_TLV_TYPE_RECORDED_PCM_EVENT_BYTE_SIZE:
1670
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1671
cOCT6100_TLV_MIN_LENGTH_RECORDED_PCM_EVENT_BYTE_SIZE,
1672
cOCT6100_TLV_MAX_LENGTH_RECORDED_PCM_EVENT_BYTE_SIZE );
1673
if ( ulResult == cOCT6100_ERR_OK )
1675
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1676
f_ulTlvValueAddress,
1677
&f_pApiInstance->pSharedInfo->DebugInfo.ulRecordedPcmEventByteSize );
1682
case cOCT6100_TLV_TYPE_IS_ISR_CALLED_BOFF:
1684
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1685
cOCT6100_TLV_MIN_LENGTH_IS_ISR_CALLED_BOFF,
1686
cOCT6100_TLV_MAX_LENGTH_IS_ISR_CALLED_BOFF );
1687
if ( ulResult == cOCT6100_ERR_OK )
1689
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1690
f_ulTlvValueAddress,
1691
&f_pApiInstance->pSharedInfo->MemoryMap.IsIsrCalledFieldOfst );
1693
f_pApiInstance->pSharedInfo->DebugInfo.fIsIsrCalledField = TRUE;
1698
case cOCT6100_TLV_TYPE_MUSIC_PROTECTION_ENABLE_BOFF:
1700
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1701
cOCT6100_TLV_MIN_LENGTH_MUSIC_PROTECTION_ENABLE_BOFF,
1702
cOCT6100_TLV_MAX_LENGTH_MUSIC_PROTECTION_ENABLE_BOFF );
1703
if ( ulResult == cOCT6100_ERR_OK )
1705
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1706
f_ulTlvValueAddress,
1707
&f_pApiInstance->pSharedInfo->MemoryMap.MusicProtectionFieldOfst );
1709
f_pApiInstance->pSharedInfo->ImageInfo.fMusicProtectionConfiguration = TRUE;
1714
case cOCT6100_TLV_TYPE_IDLE_CODE_DETECTION_ENABLE:
1716
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1717
cOCT6100_TLV_MIN_LENGTH_IDLE_CODE_DETECTION,
1718
cOCT6100_TLV_MAX_LENGTH_IDLE_CODE_DETECTION );
1719
if ( ulResult == cOCT6100_ERR_OK )
1721
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1722
f_ulTlvValueAddress,
1725
f_pApiInstance->pSharedInfo->ImageInfo.fIdleCodeDetection = (UINT8)( ulTempValue & 0xFF );
1730
case cOCT6100_TLV_TYPE_IDLE_CODE_DETECTION_BOFF:
1732
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1733
cOCT6100_TLV_MIN_LENGTH_IDLE_CODE_DETECTION_BOFF,
1734
cOCT6100_TLV_MAX_LENGTH_IDLE_CODE_DETECTION_BOFF );
1735
if ( ulResult == cOCT6100_ERR_OK )
1737
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1738
f_ulTlvValueAddress,
1739
&f_pApiInstance->pSharedInfo->MemoryMap.IdleCodeDetectionFieldOfst );
1741
f_pApiInstance->pSharedInfo->ImageInfo.fIdleCodeDetectionConfiguration = TRUE;
1746
case cOCT6100_TLV_TYPE_IMAGE_TYPE:
1748
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1749
cOCT6100_TLV_MIN_LENGTH_IMAGE_TYPE,
1750
cOCT6100_TLV_MAX_LENGTH_IMAGE_TYPE );
1751
if ( ulResult == cOCT6100_ERR_OK )
1753
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1754
f_ulTlvValueAddress,
1757
/* Check if read image type value is what's expected. */
1758
if ( ( ulTempValue != cOCT6100_IMAGE_TYPE_WIRELINE )
1759
&& ( ulTempValue != cOCT6100_IMAGE_TYPE_COMBINED ) )
1760
return cOCT6100_ERR_FATAL_E9;
1762
f_pApiInstance->pSharedInfo->ImageInfo.byImageType = (UINT8)( ulTempValue & 0xFF );
1767
case cOCT6100_TLV_TYPE_MAX_WIRELINE_CHANNELS:
1769
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1770
cOCT6100_TLV_MIN_LENGTH_MAX_WIRELINE_CHANNELS,
1771
cOCT6100_TLV_MAX_LENGTH_MAX_WIRELINE_CHANNELS );
1772
if ( ulResult == cOCT6100_ERR_OK )
1774
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1775
f_ulTlvValueAddress,
1781
case cOCT6100_TLV_TYPE_AF_EVENT_CB_SIZE:
1783
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1784
cOCT6100_TLV_MIN_LENGTH_AF_EVENT_CB_BYTE_SIZE,
1785
cOCT6100_TLV_MAX_LENGTH_AF_EVENT_CB_BYTE_SIZE );
1786
if ( ulResult == cOCT6100_ERR_OK )
1788
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1789
f_ulTlvValueAddress,
1790
&f_pApiInstance->pSharedInfo->DebugInfo.ulAfEventCbByteSize );
1795
case cOCT6100_TLV_TYPE_BUFFER_PLAYOUT_SKIP_IN_EVENTS:
1797
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1798
cOCT6100_TLV_MIN_LENGTH_BUFFER_PLAYOUT_SKIP_IN_EVENTS,
1799
cOCT6100_TLV_MAX_LENGTH_BUFFER_PLAYOUT_SKIP_IN_EVENTS );
1800
if ( ulResult == cOCT6100_ERR_OK )
1802
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1803
f_ulTlvValueAddress,
1806
f_pApiInstance->pSharedInfo->ImageInfo.fBufferPlayoutSkipInEvents = TRUE;
1811
case cOCT6100_TLV_TYPE_ZZ_ENERGY_CHAN_STATS_BOFF:
1813
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1814
cOCT6100_TLV_MIN_LENGTH_ZZ_ENERGY_CHAN_STATS_BOFF,
1815
cOCT6100_TLV_MAX_LENGTH_ZZ_ENERGY_CHAN_STATS_BOFF );
1816
if ( ulResult == cOCT6100_ERR_OK )
1818
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1819
f_ulTlvValueAddress,
1820
&f_pApiInstance->pSharedInfo->MemoryMap.RinEnergyStatFieldOfst );
1822
f_pApiInstance->pSharedInfo->ImageInfo.fRinEnergyStat = TRUE;
1827
case cOCT6100_TLV_TYPE_YY_ENERGY_CHAN_STATS_BOFF:
1829
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1830
cOCT6100_TLV_MIN_LENGTH_YY_ENERGY_CHAN_STATS_BOFF,
1831
cOCT6100_TLV_MAX_LENGTH_YY_ENERGY_CHAN_STATS_BOFF );
1832
if ( ulResult == cOCT6100_ERR_OK )
1834
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1835
f_ulTlvValueAddress,
1836
&f_pApiInstance->pSharedInfo->MemoryMap.SoutEnergyStatFieldOfst );
1838
f_pApiInstance->pSharedInfo->ImageInfo.fSoutEnergyStat = TRUE;
1843
case cOCT6100_TLV_TYPE_DOUBLE_TALK_BEH_MODE:
1845
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1846
cOCT6100_TLV_MIN_LENGTH_DOUBLE_TALK_BEH_MODE,
1847
cOCT6100_TLV_MAX_LENGTH_DOUBLE_TALK_BEH_MODE );
1848
if ( ulResult == cOCT6100_ERR_OK )
1850
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1851
f_ulTlvValueAddress,
1854
if ( ulTempValue != 0 )
1855
f_pApiInstance->pSharedInfo->ImageInfo.fDoubleTalkBehavior = TRUE;
1857
f_pApiInstance->pSharedInfo->ImageInfo.fDoubleTalkBehavior = FALSE;
1863
case cOCT6100_TLV_TYPE_DOUBLE_TALK_BEH_MODE_BOFF:
1865
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1866
cOCT6100_TLV_MIN_LENGTH_DOUBLE_TALK_BEH_MODE_BOFF,
1867
cOCT6100_TLV_MAX_LENGTH_DOUBLE_TALK_BEH_MODE_BOFF );
1868
if ( ulResult == cOCT6100_ERR_OK )
1870
ulResult = Oct6100ApiTlvReadBitOffsetStruct( f_pApiInstance,
1871
f_ulTlvValueAddress,
1872
&f_pApiInstance->pSharedInfo->MemoryMap.DoubleTalkBehaviorFieldOfst );
1874
f_pApiInstance->pSharedInfo->ImageInfo.fDoubleTalkBehaviorFieldOfst = TRUE;
1879
case cOCT6100_TLV_TYPE_SOUT_NOISE_BLEACHING:
1881
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1882
cOCT6100_TLV_MIN_LENGTH_SOUT_NOISE_BLEACHING,
1883
cOCT6100_TLV_MAX_LENGTH_SOUT_NOISE_BLEACHING );
1884
if ( ulResult == cOCT6100_ERR_OK )
1886
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1887
f_ulTlvValueAddress,
1890
if ( ulTempValue != 0 )
1891
f_pApiInstance->pSharedInfo->ImageInfo.fSoutNoiseBleaching = TRUE;
1893
f_pApiInstance->pSharedInfo->ImageInfo.fSoutNoiseBleaching = FALSE;
1899
case cOCT6100_TLV_TYPE_NLP_STATISTICS:
1901
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1902
cOCT6100_TLV_MIN_LENGTH_NLP_STATISTICS,
1903
cOCT6100_TLV_MAX_LENGTH_NLP_STATISTICS );
1904
if ( ulResult == cOCT6100_ERR_OK )
1906
ulResult = Oct6100ApiReadDword( f_pApiInstance,
1907
f_ulTlvValueAddress,
1910
if ( ulTempValue != 0 )
1911
f_pApiInstance->pSharedInfo->ImageInfo.fSinLevel = TRUE;
1913
f_pApiInstance->pSharedInfo->ImageInfo.fSinLevel = FALSE;
1920
/* Unknown TLV type field... check default length and nothing else. */
1921
ulResult = Oct6100ApiTlvCheckLengthField( f_ulTlvFieldLength,
1922
cOCT6100_TLV_MIN_LENGTH_DEFAULT,
1923
cOCT6100_TLV_MAX_LENGTH_DEFAULT );
1932
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
1934
Function: Oct6100ApiTlvCheckLengthField
1936
Description: This function validates the TLV length field.
1938
-------------------------------------------------------------------------------
1939
| Argument | Description
1940
-------------------------------------------------------------------------------
1941
f_ulTlvFieldLength Length field read from the TLV.
1942
f_ulMinLengthValue Minimum value supported for the TLV.
1943
f_ulMaxLengthValue Maximum value supported for the TLV.
1945
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
1946
#if !SKIP_Oct6100ApiTlvCheckLengthField
1947
UINT32 Oct6100ApiTlvCheckLengthField(
1948
IN UINT32 f_ulTlvFieldLength,
1949
IN UINT32 f_ulMinLengthValue,
1950
IN UINT32 f_ulMaxLengthValue )
1952
/* Check if the value is too small. */
1953
if ( f_ulTlvFieldLength < f_ulMinLengthValue )
1954
return ( cOCT6100_ERR_FATAL_59 );
1956
/* Check if the value is too big. */
1957
if ( f_ulTlvFieldLength > f_ulMaxLengthValue )
1958
return ( cOCT6100_ERR_FATAL_5A );
1960
/* Check if the value is dword aligned. */
1961
if ( ( f_ulTlvFieldLength % 4 ) != 0 )
1962
return ( cOCT6100_ERR_OPEN_INVALID_TLV_LENGTH );
1964
return cOCT6100_ERR_OK;
1969
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
1971
Function: Oct6100ApiTlvReadBitOffsetStruct
1973
Description: This function extracts a bit offset structure from the TLV.
1975
-------------------------------------------------------------------------------
1976
| Argument | Description
1977
-------------------------------------------------------------------------------
1978
f_pApiInstance Pointer to API instance. This memory is used to keep the
1979
present state of the chip and all its resources.
1981
f_ulAddress Address where the read the TLV information.
1982
f_pBitOffsetStruct Pointer to a bit offset stucture.
1984
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
1985
#if !SKIP_Oct6100ApiTlvReadBitOffsetStruct
1986
UINT32 Oct6100ApiTlvReadBitOffsetStruct(
1987
IN OUT tPOCT6100_INSTANCE_API f_pApiInstance,
1988
IN UINT32 f_ulAddress,
1989
OUT tPOCT6100_TLV_OFFSET f_pBitOffsetStruct )
1991
tOCT6100_READ_PARAMS ReadParams;
1995
UINT32 ulOffsetValue;
1998
ReadParams.pProcessContext = f_pApiInstance->pProcessContext;
2000
ReadParams.ulUserChipId = f_pApiInstance->pSharedInfo->ChipConfig.ulUserChipId;
2001
ReadParams.pusReadData = &usReadData;
2003
/*======================================================================*/
2004
/* Read the first 16 bits of the TLV field. */
2006
ReadParams.ulReadAddress = f_ulAddress;
2007
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
2008
if ( ulResult != cOCT6100_ERR_OK )
2012
ulOffsetValue = usReadData << 16;
2014
/* Read the last word of the TLV type. */
2015
ReadParams.ulReadAddress += 2;
2016
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
2017
if ( ulResult != cOCT6100_ERR_OK )
2021
ulOffsetValue |= usReadData;
2023
/*======================================================================*/
2026
/*======================================================================*/
2027
/* Read the first 16 bits of the TLV field. */
2029
ReadParams.ulReadAddress += 2;
2030
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
2031
if ( ulResult != cOCT6100_ERR_OK )
2035
ulSizeValue = usReadData << 16;
2037
/* Read the last word of the TLV type. */
2038
ReadParams.ulReadAddress += 2;
2039
mOCT6100_DRIVER_READ_API( ReadParams, ulResult );
2040
if ( ulResult != cOCT6100_ERR_OK )
2044
ulSizeValue |= usReadData;
2046
/*======================================================================*/
2048
/* Set the structure fields. */
2049
f_pBitOffsetStruct->usDwordOffset = (UINT16)(ulOffsetValue / 32);
2050
f_pBitOffsetStruct->byBitOffset = (UINT8) (32 - (ulOffsetValue % 32) - ulSizeValue);
2051
f_pBitOffsetStruct->byFieldSize = (UINT8) (ulSizeValue);
2053
return cOCT6100_ERR_OK;