[[PageOutline(2-5,Содержание:)]] = Канальное окончание EM (интерфейс E&M) = Канальное окончание EM предназначено для работы с интерфейсами E&M. Интерфейс E&M имеет аналоговый (двух- или четырехпроводный) канал ТЧ для передачи речи и один (двух- или четырехпроводный) сигнальный канал. Плата VE-01 (VE-02) предполагает, что сигнальный канал интерфейса E&M использует СУВ A шины TDM. В конфигурации по умолчанию значение 1 СУВ A соответствует состоянию сигнального канала "on-hook", значение 0 - состоянию "off-hook". Однако конфигурационный параметр "Инверсия СУВ" позволяет изменить это соответствие на противоположное. == Описание работы канального окончания == Существует несколько вариантов протокола сигнализации E&M, в основном различающихся способом занятия канала. Канальное окончание EM поддерживает три варианта: "немедленный старт" (Immediate Start), "wink" и "задержка старта" (Delay Start). Выбор варианта протокола осуществляется конфигурационным параметром "Вариант сигнализации". Кроме этого в каждом из вариантов передача адресной информации (номера вызываемого абонента) может осуществляться декадно-импульсным или двухчастотным (DTMF) способами. Способ передачи адресной информации выбирается конфигурационным параметром "Набор номера DTMF". === Прием вызова со стороны сети IP === ==== Вариант "немедленный старт" ==== В варианте "немедленный старт" при получении INVITE со стороны сети IP канальное окончание EM занимает канал, переводя сигнальный канал в состояние "off-hook", и переходит в состояние `Dialing`. После этого канальное окончание выполняет задержку 150 мс и начинает передавать в канал номер вызываемого абонента. После окончания передачи номера окончание EM переходит в состояние `Dialed`, передает ответ "183 Session progress" в сторону вызывающего абонента и активирует медиапоток, благодаря чему вызывающий абонент может слышать акустические сигналы из канала ТЧ. При ответе вызываемого абонента СУВ A на входе канального окончания переходит в состояние "off-hook". обнаружив это, окончание EM передает ответ "200 OK" вызывающему абоненту и переходит в состояние `Connected`. Пример сценария вызова приведен на следующей диаграмме: {{{#!PlantUml @startuml title Cценарий вызова "немедленный старт" со стороны сети IP skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (IP)" as A participant "окончание EM" as B participant "Абонент Б (TDM)" as C A --> B: INVITE B --> A: 100 Trying B -> C: off-hook B -> C: набор номера B --> A: 183 Session Progress A <-[#0000ff]-> B: медиапоток note right of C: вызываемый абонент слышит звонок C o-[#gray]> A: // КПВ// ... note over C: абонент ответил на вызов C -> B: off-hook B --> A: 200 OK A --> B: ACK note over A, C: абоненты А и Б ведут разговор @enduml }}} ==== Вариант "wink" ==== Вариант сигнализации "wink" отличается от варианта "немедленный старт" тем, что в ответ на занятие канала удаленная сторона подтверждает занятие, передавая сигнал "wink" - короткий импульс (переход в состояние "off-hook" и обратно в "on-hook") в сигнальном канале длительностью 100...300 мс. Прием сигнала "wink" говорит о том, что удаленная сторона успешно распознала занятие канала и готова к приему адресной информации. При работе с вариантом сигнализации "wink" после занятия канала (перевода сигнального канала в состояние "off-hook") канальное окончание переходит в состояние `Seizure` и ожидает сигнал "wink". При получении сигнала "wink" канальное окончание переходит в состояние `Dialing` и начинает передачу номера. Если в течение 500 мс сигнал "wink" не принят, канальное окончание EM освобождает канал (переводит сигнальный канал в состояние "on-hook"), передает вызывающему абоненту ответ "480 Temporarily Unavailable" и переходит в исходное состояние (`Idle`). {{{#!PlantUml @startuml title Cценарий вызова "wink" со стороны сети IP skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (IP)" as A participant "окончание EM" as B participant "Абонент Б (TDM)" as C A --> B: INVITE B --> A: 100 Trying B -> C: off-hook C -> B: wink B -> C: набор номера B --> A: 183 Session Progress A <-[#0000ff]-> B: медиапоток note right of C: вызываемый абонент слышит звонок C o-[#gray]> A: // КПВ// ... note over C: абонент ответил на вызов C -> B: off-hook B --> A: 200 OK A --> B: ACK note over A, C: абоненты А и Б ведут разговор @enduml }}} Вариант сигнализации "wink" является более надежным по сравнению с вариантом "немедленный старт", так как позволяет обнаружить встречное занятие канала и/или неисправность канала (отсутствие прохождения сигналов). ==== Вариант "задержка старта" ==== Бывают ситуации, когда оборудование принимающей вызов стороны не успевает вовремя приготовиться к приему номера. Например в некоторых телефонных станциях из соображений экономии комплектов оборудования, принимающего номер, существенно меньше, чем абонентских комплектов. В таких станциях возможны ситуации, когда на момент занятия канала все комплекты приема номера уже заняты, и для продолжения процесса установки соединения необходимо ждать, когда один из них освободится. Вариант сигнализации "задержка старта" решает проблему задержки готовности к приему номера. В данном варианте сигнализации, если принимающая вызов сторона в момент занятия канала не готова к приему адресной информации, она переводит сигнальный канал в состояние "off-hook" и удерживает это состояние до готовности к приему номера. Когда принимающая сторона готова, сигнальный канал возвращается в состояние "on-hook", чем сигнализирует вызывающей стороне о возможности передавать номер. При работе с вариантом сигнализации "задержка старта" после занятия канала (перевода сигнального канала в состояние "off-hook") канальное окончание EM переходит в состояние `Seizure` и в течение 150 мс ожидает от удаленной стороны сигнал неготовности к приему номера. Если в течение этих 150 мс сигнальный канал на входе канального окончания оставался в состоянии "on-hook", окончание EM переходит в состояние `Dialing` и начинает передачу номера (в этом случае сценарий вызова ничем не отличается от варианта "немедленный старт"). Если же во время 150 мс ожидания от удаленной стороны принят сигнал "off-hook", канальное окончание EM ожидает возвращение сигнального канала в состояние "on-hook", после чего переходит в состояние `Dialing` и начинает передачу номера. Пример сценария с задержкой старта показан на следующей диаграмме: {{{#!PlantUml @startuml title Cценарий вызова "задержка старта" со стороны сети IP skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (IP)" as A participant "окончание EM" as B participant "Абонент Б (TDM)" as C A --> B: INVITE B --> A: 100 Trying B -> C: off-hook note right of C: станция не готова к приему номера C -> B: off-hook ... note right of C: станция готова к приему номера C -> B: on-hook B -> C: набор номера B --> A: 183 Session Progress A <-[#0000ff]-> B: медиапоток note right of C: вызываемый абонент слышит звонок C o-[#gray]> A: // КПВ// ... note over C: абонент ответил на вызов C -> B: off-hook B --> A: 200 OK A --> B: ACK note over A, C: абоненты А и Б ведут разговор @enduml }}} === Вызов в сторону сети IP === ==== Варианты "немедленный старт" и "задержка старта" ==== Сразу после получения входящего занятия канала канальное окончание EM готово к приему номера вызываемого абонента, поэтому оно никогда не передает в канал сигнал задержки и, таким образом, сценарии вызова в вариантах "немедленный старт" и "задержка старта" ничем не отличаются. После получения сигнала занятия канала (перехода сигнального канала от удаленной стороны в состояние "off-hook") канальное окончание EM переходит в состояние `NumRecv` и ожидает набор номера. Номер вызываемого абонента может передаваться как декадными сериями импульсов в сигнальном канале, так и двухчастотными посылками DTMF в разговорном канале. Окончание набора номера определяется по таймауту, устанавливаемому конфигурационным параметром "Таймаут набора". Кроме этого, если конфигурационный параметр "Рег. выражение набора" не пуст, после приема каждой цифры номера выполняется проверка набранного номера на совпадение с регулярным выражением. При совпадении номера с регулярным выражением принимается решение об окончании набора номера. После окончания набора номера канальное окончание EM отправляет в сторону сети IP сообщение INVITE и переходит в состояние `Calling`. В состоянии `Calling` канальное окончание EM находится до ответа вызываемого абонента или отмены вызова (отклонения вызова вызываемой стороной или снятия вызова вызывающей стороной). При получении от вызываемой стороны ответа "180 Ringing" окончание EM передает в канал TDM акустический сигнал "Контроль посылки вызова" (КПВ). При ответе вызываемого абонента канальное окончание EM подключает медиапоток к каналу TDM (если это не было сделано ранее), переводит сигнальный канал в состояние "off-hook" и переходит в состояние `Connected`. {{{#!PlantUml @startuml title Cценарий вызова со стороны сети TDM skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (TDM)" as A participant "окончание EM" as B participant "Абонент Б (IP)" as C A -> B: off-hook A -> B: набор номера B --> C: INVITE C --> B: 100 Trying C --> B: 180 Ringing B o-[#blue]> A: КПВ note right of C: вызываемый абонент слышит звонок ... note right of C: вызываемый абонент ответил на вызов C --> B: 200 OK B --> C: ACK B <-[#0000ff]-> C: медиапоток B -> A: off-hook note over A, C: абоненты А и Б ведут разговор @enduml }}} При получении от вызываемой стороны медиапотока до ответа вызываемого абонента (например ответ "183 Session Progress") медиапоток подключается к каналу TDM, и дальнейшая передача акустических сигналов вызывающему абоненту возлагается на оборудование вызываемого абонента. Пример сценария местного вызова с получением медиапотока до ответа вызываемого абонента: {{{#!PlantUml @startuml title Cценарий вызова со стороны сети TDM с early media skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (TDM)" as A participant "окончание EM" as B participant "Абонент Б (IP)" as C A -> B: off-hook A -> B: набор номера B --> C: INVITE C --> B: 100 Trying C --> B: 183 Session Progress B <-[#0000ff]-> C: медиапоток C o-[#gray]> A: КПВ note right of C: вызываемый абонент слышит звонок ... note right of C: вызываемый абонент ответил на вызов C --> B: 200 OK B --> C: ACK B -> A: off-hook note over A, C: абоненты А и Б ведут разговор @enduml }}} ==== Вариант "wink" ==== В варианте сигнализации "wink" при получении занятия канала удаленной стороной канальное окончание EM передает в сигнальный канал сигнал "wink" длительностью 120 мс, после чего сценарий установки соединений ничем не отличается от вариантов "немедленный старт" и "задержка старта": {{{#!PlantUml @startuml title Cценарий вызова "wink" со стороны сети TDM skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Абонент А (TDM)" as A participant "окончание EM" as B participant "Абонент Б (IP)" as C A -> B: off-hook B -> A: wink A -> B: набор номера B --> C: INVITE C --> B: 100 Trying C --> B: 180 Ringing B o-[#blue]> A: КПВ note right of C: вызываемый абонент слышит звонок ... note right of C: вызываемый абонент ответил на вызов C --> B: 200 OK B --> C: ACK B <-[#0000ff]-> C: медиапоток B -> A: off-hook note over A, C: абоненты А и Б ведут разговор @enduml }}} === Отбой === Отбой соединения, находящегося в разговорном состоянии, может быть инициирован любой из сторон соединения. При отбое со стороны сети IP (получение BYE) канальное окончание EM переводит сигнальный канал в состояние "on-hook" и переходит в исходное состояние (`Idle`). При получении состояния "ob-hook" сигнального канала со стороны TDM канальное окончание EM отправляет сообщение BYE в сторону сети IP и переходит в исходное состояние (`Idle`). До ответа вызываемого абонента отбой (снятие вызова) возможны только по инициативе вызывающей стороны. При снятии вызова со стороны сети IP (прием CANCEL) канальное окончание EM переводит сигнальный канал в состояние "on-hook" и переходит в исходное состояние (`Idle`). При обнаружении состояния входного сигнального канала "on-hook" более 400 мс в процессе приема вызова со стороны канала TDM канальное окончание EM передает в сеть IP сообщение CANCEL (если уже было отправлено сообщение INVITE) и переходит в исходное состояние (`Idle`). Если при выполнении вызова в сторону сети IP канальное окончание EM получает неуспешный ответ на INVITE (например вызов занятого абонента), анальное окончание передает в канал акустический сигнал "Занято", переходит в состояние `Busy` и ожидает снятие вызова (перевод сигнального канала в состояние "on-hook") от удаленной стороны. == Параметры конфигурации канального окончания == Пример конфигурации канального окончания EM: [[Image(ss1.jpg)]] Далее описаны параметры, специфичные для канального окончания EM. Не указанные здесь конфигурационные параметры работают так же, как и во всех прочих существующих канальных окончаниях. См. EndpointParameters. Инверсия СУВ:: Если чекбокс отмечен, передаваемый и принимаемый СУВ A инвертируются: значение СУВ 0 - состояние "on-hook", значение 1 - "off-hook". Если чекбокс не отмечен, инверсия отсутствует: значение 0 - состояние "off-hook", значение 1 - "on-hook". Значение по умолчанию - чекбокс не отмечен (инверсия отсутствует). Вариант сигнализации:: Параметр определяет, какой вариант сигнализации используется канальным окончанием. Возможен выбор одного из вариантов: "немедленный старт", "wink" или "задержка старта". Значение по умолчанию - "немедленный старт". Набор номера DTMF:: Если чекбокс отмечен, передача адресной информации осуществляется двухчастотными посылками (DTMF) в разговорном канале. Если чекбокс не отмечен, передача адресной информации осуществляется в сигнальном канале декадно-импульсным способом. Значение по умолчанию - чекбокс не отмечен (передача номера декадными сериями импульсов в сигнальном канале). Межцифровой интервал:: Параметр определяет длительность паузы между сериями импульсов при передаче номера декадно-импульсным способом в мс. Знаение по умолчанию - 500 мс. Таймаут набора:: Параметр определяет максимальное время ожидания очередной цифры номера при входящем со стороны канала TDM вызове. Если в течение заданного параметром времени не принята цифра номера, канальное окончание считает прием номера законченным, передает в сеть IP вызов набранного номера и переходит в состояние Calling. Допустимые значения - от 1000 мс до 100000 мс. Значение по умолчанию - 5000 мс. Номинальный уровень входа:: Данный конфигурационный параметр имеется только в канальных окончаниях EM платы VE-02 каналов 255 и 256 (использующих порты модулей EM01). Значение параметра устанавливает номинальный уровень входа голосового тракта порта. Допустимые значения - от -17 до +9 дБм0. Значение по умолчанию - -13 дБм0. Номинальный уровень выхода:: Данный конфигурационный параметр имеется только в канальных окончаниях EM платы VE-02 каналов 255 и 256 (использующих порты модулей EM01). Значение параметра устанавливает номинальный уровень выхода голосового тракта порта. Допустимые значения - от -17 до +5.5 дБм0. Значение по умолчанию - +4 дБм0. == Состояния канального окончания == Далее описаны состояния, в которых может находиться канальное окончание EM, и их описание. Idle:: Исходное состояние канального окончания. Канальное окончание свободно: способно принимать вызовы со стороны сети IP и ожидает занятие канала со стороны TDM. Seizure:: Выполняется исходящее занятие соединительной линии: сигнальный канал переведен в состояние "off-hook" и ожидается подтверждение готовности удаленной стороны к приему номера. Dialing:: Передается номер вызываемого абонента. Dialed:: Номер вызываемого абонента передан. Ожидается ответ. !NumRecv:: Принимается номер вызываемого абонента. Calling:: Отправлен INVITE, ожидается ответ. Connected:: Соединение установлено, идет разговор абонентов. Busy:: Неуспешный вызов в направлении TDM --> IP. В канал TDM передается акустический сигнал "Занято" и ожидается отбой вызывающей стороны. {{{#!plantuml @startuml title Упрощенная диаграмма состояний канального окончания EM Idle: исходное состояние Seizure: исходящее занятие Dialing: передается номер\nвызываемого абонента Dialed: ожидание ответа NumRecv: прием номера\nвызываемого абонента Calling: отправлен INVITE,\nожидается ответ Connected: соединение установлено,\nведется разговор Busy: ожидается отбой от\nудаленной стороны Idle --> Seizure: получено INVITE Seizure --> Dialing: получен wink Dialing --> Dialed: номер передан Dialed --> Connected: получен off-hook Idle --> NumRecv: получен off-hook NumRecv --> Calling: набор номера\nзакончен NumRecv --> Busy: ошибка приема Calling --> Connected: принято "200 OK" Calling --> Busy: принят ответ\n4xx/5xx/6xx Busy --> Idle: принят on-hook Connected --> Idle: получен on-hook Connected --> Idle: получено BYE Seizure --> Idle: получено CANCEL Dialing --> Idle: получено CANCEL Dialed --> Idle: получено CANCEL @enduml }}} == См. также == [EndpointParameters сводная таблица параметров], [wiki:EndpointFXS окончание FXS], [wiki:EndpointFXO окончание FXO], [wiki:EndpointSL окончание SL], [wiki:EndpointАДАСЭ окончание АДАСЭ].