Разработка функций для класса интерфейса между модулем УШ и модулем протокола 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