n="justify"> if (m_iPlayBackGetInd [i] == m_ucMaxPlayBackBufInd) m_iPlayBackGetInd [i] = 0; _PlayBackBuf.unlock ();
}
# ifndef ___ PC
// записати дані за допомогою інтерфейсу HPI
// пишемо за допомогою проміжного буфера, щоб не затримувати блокування m_pvPlayBackBuf на час запису в DSP
if ((ires = (dsp6713b_write_IS (m_devd, (unsigned int) puiAddress, m_pvTmpPlayBackBuf, DUMP_SIZE))))
{
dsp6713b_reset (m_devd); b_close (m_devd); (" n!! t_UHInterface :: PutDataToUH% i: DSP2_write_IS error! n Addr =% 08x Res =% i n", m_ucUHNum ,
(unsigned int) puiAddress, ires);
exit (1);
}
# endif ((p_DOUT) && (ParamRtpPrint [m_ucIndDO]))
{
printf ("<
// k = 1; = 0x80000000; (i = 31; i> = 0; i -)
{
if (ParamRtpPrint [m_ucIndDO] & k)
("[% i]: CN-% 01x, tone-% 02x, size-% i, newCtrl-% i n", i,
(m_pvTmpPlayBackBuf + i) -> m_vSDataCtrl.CN,
(m_pvTmpPlayBackBuf + i) -> m_vSDataCtrl.Tone, uiSize, (m_pvTmpPlayBackBuf + i) -> m_vSDataCtrl.NewLineCtrl); (uiSize)
{[0] = ' 0'; (ii = 0, j = 0, n = 0; (j
{(& buf1 [ii], 400, "% 02X", pucData [j]); + = 3; ((ii <399) && (n == 30 )) {n = 0; buf1 [ii + +] = ' n';}
} (buf1);
}
}>> = 1;
}
}
return (true);
}
/** ПРИЗНАЧЕННЯ: помістити дані КД в буфер відтворення
* ВХІДНІ ПАРАМЕТРИ: ucCI - номер канального інтервалу [0-31],
* vSData - дані,
* ВИХІДНІ ПАРАМЕТРИ: sizeof (Sdata) - успішне виконання,
* 0 - дані не приміщення, тому що буфер відтворення порожній
* -1 - номер КІ> 31
*/t_UHInterface :: PutDataToPlayBackBuf (unsigned char ucCI, SData & vSData)
{
int n;
// printf ("=== RTP: PutDataToPlayBackBuf n"); (ucCI> 31) return (-1); _PlayBackBuf.lock ();
n = m_iPlayBackPutInd [ucCI] <<5;
// поміщаємо дані в буфер накопичення
m_pvPlayBackBuf [ucCI + n] = vSData;
m_iPlayBackPutInd [ucCI] + +;// збільшуємо значення індексу для наступного приміщення даних (m_iPlayBackPutInd [ucCI] == m_ucMaxPlayBackBufInd) m_iPlayBackPutInd [ucCI] = 0;// циклічний перехід в начало_iPlayBackIndDelta [ucCI] + +;// збільшуємо відстань по відношенню до індексу для вилучення
if (m_iPlayBackIndDelta [ucCI]> m_ucMaxPlayBackBufInd)
{
// фіксуємо стан переповнення буфера відтворення
printf ("PlayBack buf overflow for% i n", ucCI);
} _PlayBackBuf.unlock (); (sizeof (SData));
}
/** ПРИЗНАЧЕННЯ: очистити буфер відтворення для КІ
* ВХІДНІ ПАРАМЕТРИ: ucCI - номер канального інтервалу [0-31],
* ВИХІДНІ ПАРАМЕТРИ: true - успішно
* false - помилка: номер КІ> 31
*/t_UHInterface :: ClearDataInPlayBackBuf (unsigned char ucCI)
{(ucCI> 31) return (false); _PlayBackBuf.lock (); _pvTmpPlayBackBuf [ucCI]. m_vSDataCtrl.SpeachSize = 0; return (true);
}
/** ПРИЗНАЧЕННЯ: отримати порцію даних з буфера накопичення
* ВХІДНІ ПАРАМЕТРИ: ucCI - номер канального інтервалу,
* vSData - структура для приміщення даних,
* ВИХІДНІ ПАРАМЕТРИ: true - дані витягнуті з буфера накопичення,
* false - в буфері накопичення немає даних
*/t_UHInterface :: GetAccumulatedData (unsigned char ucCI, SData & vSdata)
{
int n; _AccumulatedData.lock (); (m_iAccIndDelta [ucCI]> ACCBUFF_DEPTH)// переповнення
{
while (m_iAccGetInd [ucCI]! = m_iAccPutInd [ucCI])
{_iAccGetInd [ucCI] + +; _iAccIndDelta [ucCI] -;
// циклічний перехід в початок буфера