📄 tsip_data.c
字号:
/*****************************************************************************\
* Verifies TSIP U-law transfer
******************************************************************************/
Bool Verify_Transfer_ULaw(Uint32 FrameCnt, Uint32 FrameSize, Uint32 srcBuff,Uint32 dstBuff)
{
Uint8* ExpArrayPtr = (Uint8*)(srcBuff );
Uint8* dstArrayPtr = (Uint8*)(dstBuff );
Uint32 i,j, k;
Uint16 Data_ulaw;
#if 0
dstArrayPtr = dstArrayPtr + FrameSize;
for (i = 0; i < FrameCnt + 1; i++)
{
VAL_TRACE(0xDA04);
VAL_TRACE(i);
for (j = 0; j < FrameSize;j++)
{
VAL_TRACE(j);
VAL_TRACE(0xDA05);
VAL_TRACE(ExpArrayPtr[j]);
VAL_TRACE(dstArrayPtr[j]);
}
ExpArrayPtr = ExpArrayPtr + FrameSize ;
dstArrayPtr = dstArrayPtr + FrameSize ;
}
#endif
ExpArrayPtr = (Uint8*)(srcBuff );
dstArrayPtr = (Uint8*)(dstBuff );
dstArrayPtr = dstArrayPtr + FrameSize ;
for (i = 0; i < FrameCnt + 1; i++)
{
for (j = 0; j < FrameSize;j++)
{
if (j >= (FrameSize - 4) )
{
if(dstArrayPtr[j] != (((i+1)>> ((j - FrameSize - 4) * 8)) ))
{
return (1);
}
}
else
{
if (j > 3)
{
for (k =0; k < 2; k++)
{
Data_ulaw = (ExpArrayPtr[j+1] << 8) | ExpArrayPtr[j];
Data_ulaw = ULawCompress(Data_ulaw);
Data_ulaw = ULawExpand(Data_ulaw);
if((Data_ulaw & 0xFF) != dstArrayPtr[j])
{
return (1);
}
if(((Data_ulaw & 0xFF00) >> 8) != dstArrayPtr[j+1])
{
return (1);
}
j+=2;
}
j++;
}
else
{
if(dstArrayPtr[j] != ((i+1)>> ((j * 8)) ))
{
return (1);
}
}
}
}
ExpArrayPtr = ExpArrayPtr + FrameSize ;
dstArrayPtr = dstArrayPtr + FrameSize ;
}
return (0);
}
/* Function to simulate A-law Expansion */
Uint16 ALawExpand(signed int i)
{
int sign, exp, mant;
int j, k;
j = i ^ ALAWCHAN;
sign = (j & SIGN)>> 7;
exp = (j & EXPONENT)>>4;
mant = j & MANTISSA;
if (exp == 0)
{
k = (mant << 1) + 1;
}
else
{
k = (((mant|0x10)<<1)+1)<<(exp -1);
}
if(sign == 0)
{
k = -k;
}
k = k << 3;
return (k);
}
/* Function to simulate A-law compression */
Uint8 ALawCompress(Uint16 InputData)
{
Uint16 sign, exp, mant;
Uint16 i, j, k;
if (InputData >= 0x8000) i = (InputData >> 3) | 0xE000;
else i = InputData >> 3;
sign = 1;
if (i >= 0x8000)
{
sign = 0;
i = -i;
}
if (i > 0x0fff) i = 0x0fff;
if ((i < 0x20) || (i >= 0x8000))
{
exp = 0;
if (i >= 0x8000) i = (i >> 1) | 0x8000;
else i = i >> 1;
mant = i &MANTISSA;
}
else
{
exp = 7;
while (i < 0x0800)
{
i = i << 1;
exp = exp - 1;
}
if (i >= 0x8000) i = (i >> 7) | 0xFE00;
else i = i >> 7;
mant = i&MANTISSA;
}
j = (sign<<7) + (exp<<4) + mant;
k = j ^ ALAWCHAN;
return(k);
}
/*****************************************************************************\
* Verifies TSIP A-law transfer
******************************************************************************/
Bool Verify_Transfer_Alaw(Uint32 FrameCnt, Uint32 FrameSize, Uint32 srcBuff,Uint32 dstBuff)
{
Uint8* ExpArrayPtr = (Uint8*)(srcBuff );
Uint8* dstArrayPtr = (Uint8*)(dstBuff );
Uint32 i,j, k;
Uint16 Data_alaw;
dstArrayPtr = dstArrayPtr + FrameSize;
#if 0
/*
for (i = 0; i < FrameCnt + 1; i++)
{
VAL_TRACE(0xDA04);
VAL_TRACE(i);
for (j = 0; j < FrameSize;j++)
{
VAL_TRACE(j);
VAL_TRACE(0xDA05);
VAL_TRACE(ExpArrayPtr[j]);
VAL_TRACE(dstArrayPtr[j]);
}
ExpArrayPtr = ExpArrayPtr + FrameSize ;
dstArrayPtr = dstArrayPtr + FrameSize ;
}
*/
#endif
ExpArrayPtr = (Uint8*)(srcBuff );
dstArrayPtr = (Uint8*)(dstBuff );
dstArrayPtr = dstArrayPtr + FrameSize ;
for (i = 0; i < FrameCnt + 1; i++)
{
for (j = 0; j < FrameSize;j++)
{
if (j >= (FrameSize - 4) )
{
if(dstArrayPtr[j] != (((i+1)>> ((j - FrameSize - 4) * 8)) ))
{
return (1);
}
}
else
{
if (j > 3)
{
for (k =0; k < 2; k++)
{
Data_alaw = (ExpArrayPtr[j+1] << 8) | ExpArrayPtr[j];
Data_alaw = ALawCompress(Data_alaw);
Data_alaw = ALawExpand(Data_alaw);
if((Data_alaw & 0xFF) != dstArrayPtr[j])
{
return (1);
}
if(((Data_alaw & 0xFF00) >> 8) != dstArrayPtr[j+1])
{
return (1);
}
j+=2;
}
j++;
}
else
{
if(dstArrayPtr[j] != ((i+1)>> ((j * 8)) ))
{
return (1);
}
}
}
}
ExpArrayPtr = ExpArrayPtr + FrameSize ;
dstArrayPtr = dstArrayPtr + FrameSize ;
}
return (0);
}
/*****************************************************************************\
* Verifies TSIP A-law transfer
******************************************************************************/
Bool Verify_Transfer_Random_Bitmap(Uint32 FrameCnt, Uint32 FrameSize, Uint32 srcBuff,Uint32 dstBuff, Uint32 BitmapBuff, Uint32 PadByteCount)
{
Uint8* ExpArrayPtr = (Uint8*)(srcBuff );
Uint8* dstArrayPtr = (Uint8*)(dstBuff );
Uint8* BitmapBuffPtr = (Uint8*)(BitmapBuff);
Uint32 i,j;
Uint16 Data_alaw;
// Uint8 PadByte = 0;
Uint32 bitmap, Data_ulaw , Datacount = 0;
dstArrayPtr = dstArrayPtr + FrameSize ;
// DummyByte = 0;
for (i = 0; i < FrameCnt + 1; i++)
{
for (j = 0; j < FrameSize;j++)
{
Datacount = 0;
if (j >= (FrameSize - 4) )
{
if(dstArrayPtr[j] != (((i+1)>> ((j - FrameSize - 4) * 8)) ))
{
return (1);
}
}
else
{
if (PadByteCount != 0)
{
/* PadBytes are undefined */
if (j >= (FrameSize - 4 - PadByteCount))
{
/*
if(dstArrayPtr[j] != PadByte)
{
return (1);
}
*/
}
}
else
{
if (j > 3)
{
//bitmap = (BitmapBuffPtr[(j-3)/16] >> (((j-3)%16) * 2)) & 0x3;
//bitmap = (BitmapBuffPtr[(j-4)/4] >> (((j-4)%4) * 2)) & 0x3;
bitmap = ((BitmapBuffPtr[(j-4)/4] << (((j-4)%4) * 2)) & 0xC0000000) >> 30;
if (bitmap == 0)
{
}
else
{
/* Linear */
if (bitmap == 1)
{
Datacount++;
if(ExpArrayPtr[j] != dstArrayPtr[j])
{
return (1);
}
}
else
{
/* U-Law */
if ((bitmap == 2) || (bitmap == 3))
{
/* Check for Dummy Bytes */
if (((Datacount%4) == 3) | ((Datacount%4) == 1))
{
Datacount++;
/* DummyBytes are undefined */
/*
if(DummyByte != dstArrayPtr[j])
{
return (1);
}
*/
/* Increment for Dummy Byte */
j++;
}
Datacount += 2;
if (bitmap == 2)
{
Data_ulaw = (ExpArrayPtr[j+1] << 8) | ExpArrayPtr[j];
Data_ulaw = ULawCompress(Data_ulaw);
Data_ulaw = ULawExpand(Data_ulaw);
if((Data_ulaw & 0xFF) != dstArrayPtr[j])
{
return (1);
}
if(((Data_ulaw & 0xFF00) >> 8) != dstArrayPtr[j+1])
{
return (1);
}
j+=1;
}
if (bitmap == 3)
{
Data_alaw = (ExpArrayPtr[j+1] << 8) | ExpArrayPtr[j];
Data_alaw = ALawCompress(Data_alaw);
Data_alaw = ALawExpand(Data_alaw);
if((Data_alaw & 0xFF) != dstArrayPtr[j])
{
return (1);
}
if(((Data_alaw & 0xFF00) >> 8) != dstArrayPtr[j+1])
{
return (1);
}
j+=1;
}
}
}
}
}
else
{
if(dstArrayPtr[j] != ((i+1)>> ((j * 8)) ))
{
return (1);
}
}
}
}
}
ExpArrayPtr = ExpArrayPtr + FrameSize ;
dstArrayPtr = dstArrayPtr + FrameSize ;
}
return (0);
}
//Setup PSC
void setup_PSC(void){
hPsc = CSL_pscOpen(&pscObj,
CSL_PSC,
NULL,
&psc_status);
}
void Close_PSC_handle(void){
CSL_pscClose(hPsc);
}
void TSIP_Domain_Enable()
{
setup_PSC();
/* Enabling TSIP0 Clock */
CSL_FINS(hPsc->regs->MDCTL9, PSC_MDCTL9_NEXT, CSL_PSC_MDCTL9_NEXT_ENABLE);
CSL_FINS(hPsc->regs->MDCTL9, PSC_MDCTL0_EMURSTIE, CSL_PSC_MDCTL9_EMURSTIE_INTERRUPTENABLE);
CSL_FINS(hPsc->regs->PTCMD, PSC_PTCMD_G0, (0x00000001 << 0));
/* Enabling TSIP1 Clock */
CSL_FINS(hPsc->regs->MDCTL10, PSC_MDCTL10_NEXT, CSL_PSC_MDCTL10_NEXT_ENABLE);
CSL_FINS(hPsc->regs->MDCTL10, PSC_MDCTL0_EMURSTIE, CSL_PSC_MDCTL10_EMURSTIE_INTERRUPTENABLE);
CSL_FINS(hPsc->regs->PTCMD, PSC_PTCMD_G0, (0x00000001 << 0));
/* Enabling TSIP2 Clock */
CSL_FINS(hPsc->regs->MDCTL11, PSC_MDCTL11_NEXT, CSL_PSC_MDCTL11_NEXT_ENABLE);
CSL_FINS(hPsc->regs->MDCTL11, PSC_MDCTL0_EMURSTIE, CSL_PSC_MDCTL11_EMURSTIE_INTERRUPTENABLE);
CSL_FINS(hPsc->regs->PTCMD, PSC_PTCMD_G0, (0x00000001 << 0));
Close_PSC_handle();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -