uiBaseAddress = (unsigned int *) (BASE_DATA_ADDRESS);
m_pvBaseDataCtrl = (SLineCtrl *) (m_puiBaseAddress + (CONF_SIZE>> 2));
m_puiDumpNum = (unsigned int *) (m_pvBaseDataCtrl +64) + (sizeof (m_uiDumpNum)>> 2);
m_puiBaseDataForRTP = m_puiDumpNum + (sizeof (m_uiDumpNum)>> 2);
m_puiBaseDataForUH = m_puiBaseDataForRTP + (DUMP_SIZE * 2>> 2);
// глибина буфера відтворення
# ifdef ___ PC
m_ucMaxPlayBackBufInd = JITTER_BUF_SIZE/10;
# else
m_ucMaxPlayBackBufInd = (JITTER_BUF_SIZE <<1)/10 ;//в два рази більше джіттер буфера
# endif
// буфер відтворення для запису
m_pvPlayBackBuf = new SData [m_ucMaxPlayBackBufInd <<5]; // буфер для всіх 32 каналів
m_pvTmpPlayBackBuf = new SData [32];
// буфер для читання даних мовного трафіку з УШ
m_puiDataFromUH = new unsigned int [DUMP_SIZE>> 2];
// буфер накопичення даних мовного трафіку, прочитаних з УШ для 32 КІ
m_pvAccumulatedData = new SData [ACCBUFF_DEPTH <<5]; (! m_pvPlayBackBuf | |! m_pvAccumulatedData | |! m_puiDataFromUH | |! m_pvTmpPlayBackBuf)
{
printf ("t_UHInterface :: t_UHInterface: Allocation memory error! n");
exit (1);
}
// проініціалізувати буфер з керуючою інформацією кодування/декодування
memset (m_vLineCtrl, 0, sizeof (m_vLineCtrl));
// проініціалізувати буфер з ознаками зміни керуючої інформації
// кодування/декодування
memset (m_uiChangeLineCtrl, 0, sizeof (m_uiChangeLineCtrl));
// проініціалізувати буфер з даними для УШ як відсутність пакетів для всіх КІ
// (тиша)
i = 0;
while (i <= 31)
{
ClearDataInPlayBackBuf (i + +);
}
// обнулити буфер накопичення даних мовного трафіку
memset (m_iAccPutInd, 0, sizeof (m_iAccPutInd));
memset (m_iAccIndDelta, 0, sizeof (m_iAccIndDelta));
// обнулити масив з ознаками необхідності накопичення даних мовного трафіку для 32 КІ
memset (m_IsAccumulating, 0, sizeof (m_IsAccumulating));
# ifndef ___ PC
// дескриптор пристрою
m_devd = dsp6713b_open (m_cName);
if (m_devd <0)
{
printf ("!! t_UHInterface :: run% i DSP2_open error, Res =% i, name =% s n", m_ucUHNum, m_devd, m_cName);
exit (1);
}
# endif
}
/** ПРИЗНАЧЕННЯ: деструктор
* ВХІДНІ ПАРАМЕТРИ: немає
* ВИХІДНІ ПАРАМЕТРИ: немає
*/_UHInterface :: ~ t_UHInterface ()
{
delete [] m_puiDataFromUH;
delete [] m_pvAccumulatedData;
delete [] m_pvPlayBackBuf;
delete [] m_pvTmpPlayBackBuf;
}
/** ПРИЗНАЧЕННЯ: встановити ознака виконання потоку агента УШ
* ВХІДНІ ПАРАМЕТРИ: brunnung - значення ознаки виконання потоку
* ВИХІДНІ ПАРАМЕТРИ: немає
*/t_UHInterface :: set_running (bool brunning)
{
m_is_running = brunning;
}
/** ПРИЗНАЧЕННЯ: зупинити потік агента УШ
* ВХІДНІ ПАРАМЕТРИ: немає
* ВИХІДНІ ПАРАМЕТРИ: немає
*/t_UHInterface :: stop (void)
{
timespec sleeptimer;
m_bstop_running = true;
while (m_is_running)
{
sleeptimer.tv_sec = 0;
sleeptimer.tv_nsec = 10000000;// 10 мс
nanosleep (& slee ptimer, NULL);
}
}
/** ПРИЗНАЧЕННЯ: записати у внутрішню пам'ять УШ дані конфігурації
* ВХІДНІ ПАРАМЕТРИ: ucCINum - кількість КД в ІКМ