summaryrefslogtreecommitdiff
path: root/software/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c
diff options
context:
space:
mode:
Diffstat (limited to 'software/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c')
-rw-r--r--software/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/software/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c b/software/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c
index dd54e2c..8b017ce 100644
--- a/software/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c
+++ b/software/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.c
@@ -24,9 +24,9 @@ You should have received a copy of the GNU General Public License
along with the OCT6100 GPL API; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Octasic_Release: OCT612xAPI-01.00-PR40 $
+$Octasic_Release: OCT612xAPI-01.00-PR41 $
-$Octasic_Revision: 310 $
+$Octasic_Revision: 312 $
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
@@ -281,7 +281,7 @@ UINT32 Oct6100ChipOpen(
ulStructSize = sizeof( tOCT6100_INSTANCE_API );
mOCT6100_ROUND_MEMORY_SIZE( ulStructSize, ulTempVar )
- f_pApiInstance->pSharedInfo = ( tPOCT6100_SHARED_INFO )(( UINT32 )f_pApiInstance + ulStructSize);
+ f_pApiInstance->pSharedInfo = ( tPOCT6100_SHARED_INFO )(( PUINT8 )f_pApiInstance + ulStructSize);
/* Save the process context specified by the user. */
f_pApiInstance->pProcessContext = f_pChipOpen->pProcessContext;
@@ -551,7 +551,7 @@ UINT32 Oct6100CreateLocalInstance(
ulApiInstSize = sizeof( tOCT6100_INSTANCE_API );
mOCT6100_ROUND_MEMORY_SIZE( ulApiInstSize, ulTempVar )
- pApiInstLocal->pSharedInfo = ( tPOCT6100_SHARED_INFO )(( UINT32 )f_pCreateLocal->pApiInstShared + ulApiInstSize);
+ pApiInstLocal->pSharedInfo = ( tPOCT6100_SHARED_INFO )(( PUINT8 )f_pCreateLocal->pApiInstShared + ulApiInstSize);
pApiInstLocal->pProcessContext = f_pCreateLocal->pProcessContext;
/* Create serialization object handles needed. */
@@ -4501,6 +4501,7 @@ UINT32 Oct6100ApiInitChannels(
UINT16 usLastMclkRead;
UINT16 usMclkDiff;
UINT32 ulNumberOfCycleToWait;
+ UINT32 ulTimeoutCounter;
pSharedInfo = f_pApiInstance->pSharedInfo;
@@ -4728,6 +4729,9 @@ UINT32 Oct6100ApiInitChannels(
if ( ulResult != cOCT6100_ERR_OK )
return ulResult;
+ /* Reset loop timeout counter. */
+ ulTimeoutCounter = 0x0;
+
do {
ReadParams.pusReadData = &usMclkRead;
@@ -4746,6 +4750,11 @@ UINT32 Oct6100ApiInitChannels(
/* Evaluate the difference. */
usMclkDiff = (UINT16)(( usMclkRead - usLastMclkRead ) & 0xFFFF);
+
+ /* Check for loop timeout. Bad mclk? */
+ ulTimeoutCounter++;
+ if ( ulTimeoutCounter == cOCT6100_MAX_LOOP_CPU_TIMEOUT )
+ return cOCT6100_ERR_FATAL_EA;
} while( usMclkDiff <= ulNumberOfCycleToWait );
}
@@ -4953,7 +4962,7 @@ UINT32 Oct6100ApiInitToneInfo(
/* Extract the number of char used to represent the tone event number ( 1 or 2 ). */
pszNextInfo = Oct6100ApiStrStr( pszCurrentInfo, (PUINT8)",", pszToneInfoEnd );
- ulNumCharForValue = pszNextInfo - pszCurrentInfo;
+ ulNumCharForValue = (UINT32)( pszNextInfo - pszCurrentInfo );
/* Retreive the event number */
ulToneEventNumber = 0;
@@ -4998,7 +5007,7 @@ UINT32 Oct6100ApiInitToneInfo(
pszNextInfo = pszToneInfoEnd;
/* Extract the name size. */
- ulToneNameSize = pszNextInfo - pszCurrentInfo - 2; /* - 2 for 0x0D and 0x0A.*/
+ ulToneNameSize = (UINT32)( pszNextInfo - pszCurrentInfo - 2 ); /* - 2 for 0x0D and 0x0A.*/
if ( ulToneNameSize > cOCT6100_TLV_MAX_TONE_NAME_SIZE )
return cOCT6100_ERR_OPEN_INVALID_TONE_NAME;