Разработка функций для класса интерфейса между модулем УШ и модулем протокола RTP

Отчет по практике - Компьютеры, программирование

Другие отчеты по практике по предмету Компьютеры, программирование

НИЕ : исполнительный метод потока интерфейса УШ

* ВХОДНЫЕ ПАРАМЕТРЫ : нет

* ВЫХОДНЫЕ ПАРАМЕТРЫ: нет

*/t_UHInterface::run(void)

{

#ifndef ___PC

unsigned int ii;

int ires;

#endifSleepTime;("UH_Interface %i is started\n",m_ucUHNum);

// сбросить DSP и загрузить программу модуля УШ

StartWorkDSP2();

#ifndef ___PC

ires=dsp6713b_getHPIC(m_devd,&ii);

// работа с управляющими регистрами DSP

// сбросить HINT и установить DSPINT, чтобы DSP начал выставлять прерывания

ires=dsp6713b_setHPIC(m_devd,ii|0x00000002);

#endif

{

if (m_bstop_running) break;

#ifndef ___PC

dsp6713b_sleep(m_devd); // выход из этой функции происходит каждые 10 мс по прерыванию от DSP

// обработчик прерываний находится в драйвере, драйвер инициирует этот выход

#endif

// записать управляющую информацию,во внутреннюю память модуля УШ для тех КИ, у которых она изменилась

// (упр.информация меняется по запросу другого потока)

// // здесь же определяется номер области памяти для

// считывания и записи данных модулем протокола RTP

WriteLineCtrlToUH();

// прочитать данные из внутренней памяти УШ и при необходимости

// поместить их в буфер накопления

// здесь же определяется номер области памяти для

// считывания и записи данных модулем протокола RTP

GetDataFromUH();

//поместить данные из буфера воспроизведения во внутреннюю память УШ

PutDataToUH();

#ifdef ___PC

SleepTime.tv_sec = 0;

SleepTime.tv_nsec = 5000000;//5 мс

nanosleep(&SleepTime, NULL);

#endif

} while(1);

#ifndef ___PC

// сбросить DSP

if((ires=(dsp6713b_reset(m_devd))))

{

dsp6713b_close(m_devd);

printf("!!t_UHInterface::run %i DSP2_reset error, Res=%i\n", m_ucUHNum,ires);

exit(1);

}

else dsp6713b_close(m_devd);

printf("\n RTP: DSP device is closed\n");

#endif

("Агент UH: UHInterface % is stopped\n",m_ucUHNum);

m_is_running=false;

}

 

Заключение

 

В ходе выполнения задания в период прохождения производственной практики было проведено ознакомление с принципами организации и работы IP-телефонии, а также передачи голосового сигнала.

Были реализованы отдельные функции для класса интерфейса между модулем кодирования/декодирования речевых данных (УШ) и модулем протокола RTP. В частности:

основная потоковая функция;

функция считывания закодированных модулем УШ данных, и помещения их в циклический буфер накопления;

функция предоставления данных из циклического буфера накопления по запросу другого потока;

функция помещения другим потоком данных в циклический буфер воспроизведения для последующей записи их для декодирования в модуль УШ;

функция записи в модуль УШ данных из циклического буфера воспроизведения.

Программный код был успешно протестирован и включен в интерфейс, обеспечивающий взаимодействие между модулем кодирования/декодирования речевых данных (УШ) и модулем протокола RTP.

 

Список литературы:

 

1. Руководство по технологиям объединенных сетей, 4-е издание.: Пер. с англ. - М.: Издательский дом Вильямс, 2005.

2. Гольдштейн B.C., Пинчук А.В., СуховицкийА.Л. IP-Телефония. - М.: Радио и связь, 2001.

3. Цимберов А.Г. Учебник по IP-телефонии. М.: Харвест, 2002г.

4. www.tec.voip-list.net