Библиотека Интернет Индустрии I2R.ru |
|||
|
Возможности модемов HTS ExpressЧто умеют модемы HTS ExpressКогда модем находится в неактивном состоянии, он умеет:Отвечать на звонок, автоматически на заданный по счету сигнал RING. Это - стандартная для модемов возможность, задаваемая через регистр S0.
Отвечать на звонок автоматически через определенное время, в течение которого были сигналы RING. Эта возможность является альтернативой стандартной через регистр S0 и, на наш взгляд, более корректная в смысле традиционных пожеланий. Ведь обычно людям все равно, звонит ли межгород (частые звонки или вообще единственный звонок), или же это звонки обычные, или же это телефонистка, которая может заставить звонок звенеть как угодно. Смысл режима - ответить через некоторое время, а не отвечать совершенно непредсказуемо в зависимости от межзвонкового интервала. Выводить RING лишь после определенного числа звонков. Эта возможность предназначена для работы с программами, в которых невозможно настроить ответ не на первый звонок. В таком случае Вы просто задаете, какой по счету звонок выводить, программа думает, что он первый, и отвечает в нужное Вам время. Снимать трубку, эмулировать длинные гудки. Этот режим представляет собой то, что в обиходе называют "АОН без поднятия трубки". То есть, модем снимает трубку, определяет номер, выдает удаленному абоненту длинные гудки, и ждет реакции локального абонента или его программы. Снимать трубку, эмулировать иностранный Caller ID. Этот режим предназначен для работы с фирменными программами, которые ничего не знают про русский АОН, но знают про иностранный Caller ID. Главное различие между ними состоит в том, что АОН определяет номер после поднятия трубки, а Caller ID - до этого момента. Запоминать число звонков, а затем, если на этот же номер перезвонят, выполнять некие действия (пароль доступа по числу предварительных звонков). Этот режим предназначен для парольного доступа к линии. Допустим, на линии трубку всегда снимает только автоответчик или факс-аппарат. И это принципиально, допустим, потому что так требует начальство. Или же это Ваша домашняя станция, на которую Вам модемом никто не звонит, по крайней мере, днем. Но очень редко бывает нужно модемом позвонить Вам самому. Но телефон всегда отвечает автоответчиком, и до модема Вам не добраться. В таком случае можно использовать настоящую возможность для того, чтобы сначала позвонить на номер так, чтобы аппаратура, стоящая после модема, не успела снять трубку. И повесить трубку самому. Модем посчитает число звонков, и запомнит это. Затем Вы быстро перезваниваете еще раз, то трубку снимет уже сам модем. Этот же режим работает и наоборот: если модем снимает трубку раньше, чем какая-то другая аппаратура, стоящая на той же линии, то можно заставить его подобным способом не ответить на следующий звонок и позволить сработать этой аппаратуре. Находиться в специальном режиме занятия линии (используется на время тоссинга почты): если приходит входной звонок, модем снимает трубку и сразу же ее вешает, что обеспечивает виртуальную занятость номера при его незанятости реальной. Этот режим предназначен преимущественно для FidoNet. Когда к Вам приходит почта, то Ваш мейлер запускает тоссинг. Если он выполняется в том же окне, где и работает мейлер, то на все время тоссинга трубку снимать будет некому. Это плохо, поскольку звонящие Вам узлы будут считать, что на Вашем номере никто не отвечает, и через некоторое время вовсе перестанут звонить. Обычным способом является снятие трубки на время тоссинга. Тогда Ваш номер выглядит занятым и проблем не возникает. Однако, это порождает две другие проблемы: во-первых, Вы сами голосом не сможете никуда позвонить пока идет тоссинг. А во-вторых, многие АТС отключают телефон, если на нем долго снята трубка с короткими гудками. Данный режим как раз и предназначен для борьбы как с первой, так и со второй проблемой. Определять набранный пульсом номер на параллельном телефоне и выводить его в виде Caller ID специальной формы. Эта возможность предназначена для ведения логов всех Ваших голосовых звонков. Часто бывает интересно, куда звонили Ваши знакомые, пока Вас не было дома, или же во сколько позавчера вечером Вы сами звонили Ивану Ивановичу. И то и другое можно легко посмотреть в мейлерном логе или в логе автоответчика, если данная возможность активирована. Считать звонки, выводить номер звонка. Эта возможность предназначена для того, чтобы внешние программы умели предпринимать разные действия по разным подстрокам ответа. Например, Вы можете заставить программу по RING 3 выдавать Вам предупреждающее сообщение, а по RING 5 - отвечать на звонок. Когда модем набирает номер, он умеет:С точностью до 7 герц определять частоту и уровни тональных телефонных сигналов и комбинаций из двух тонов. Вы можете задать параметры определяемых модемом сигналов прямо в герцах, а также их уровни. Среди прочего, Вы можете настроить для определения: уровень тишины в линии, минимальное и максимальное время короткого и длинного гудков, число гудков, максимальный промежуток между ними, частоты и уровни. Этот режим является совершенно уникальным среди модемов и позволяет делать совершенно фантастические вещи, немыслимые для обычных модемов. Сверхбыстрое определение сигнала "занято", определение типа междугородней станции, определение конкретной городской линии при звонках с офисной АТС, определение типа устройства у отвечающего абонента и многое другое. Фактически этот режим в совокупности с двухтональным генератором сигналов в модеме позволяет Вам полностью управлять всеми мыслимыми телефонными сигналами. Известно, что в телефонии не используются сигналы более чем двухтональные, а все двухтональные - к Вашим услугам. Сверхбыстро (за 100 миллисекунд) определять сигнал "занято" по началу первого же гудка. Это основано на отличии сигнала "занято", который всегда выдает Ваша АТС, от сигналов длинного гудка, которые выдают удаленные АТС, по частоте и уровню. Проверять состояние линии после набора цифр, и прекращать набор, если АТС не среагировала на набор. Эта возможность часто бывает нужна на старых АТС, которые не замечают начала набора номера. Мало того, что они не замечают, они часто впадают в какое-то странное состояние, если продолжать набирать его далее. Отслеживать неответ удаленного абонента, выдавать сообщение NO ANSWER. Эта возможность полезна для программ, которые не умеют считать длинные гудки и вешать трубку, если их слишком много, то есть на удаленной стороне никто не отвечает. Отслеживать голосовой ответ удаленного абонента. При этом модем практически не ошибается при детектировании голоса даже на фоне довольно сильных тресков, и не путает трески, гудки и шум с голосом. Уникальный детектор сигналов в линии обеспечивает и эту возможность. В отличие от абсолютного большинства других модемов, голосовой ответ абонента определяется не по принципу "все, что не гудок и не тишина", а при помощи спектрального анализа. Это дает редкую достоверность определения голоса, что позволяет использовать модем в многочисленных приложениях, связанных с рассылкой голосовых сообщений, факс-серверами и т.п. Полезно это и при работе в FidoNet: если Вы увидели в логе ответ Voice, то с вероятностью лучше 80% это именно он, а не трески, гудки ненормированных уровней или щелчки реле на АТС. Проигрывать в перерывах между вызывными гудками факса голосовое сообщение для того, чтобы человек на той стороне понял, что надо включить факс на ответ. Это весьма полезно при звонках туда, где сидят особо одаренные секретарши, которые даже после 20-кратного объяснения тех. персонала не могут осознать, что прерывистые гудки 1100 герц - это входящий звонок факсом, и надо включить факс-аппарат на ответ, а не орать АЛЕ в трубку. Если режим включен, то модем голосом скажет такой секретарше, что это именно факс. Более того, Вы можете переопределить голосовое сообщение и записать свое, например "Это звонит факс, нажмите кнопку Старт". При попытке набора номера при уже поднятой трубке предварительно ее вешать для сброса предыдущего неоконченного кем-либо соединения. Этот режим полезен вообще всегда, поскольку зачастую, например, программа может "забыть" повесить трубку перед новым звонком. Если это оказалось так, то модем перед набором номера сам повесит трубку на пару секунд, затем снимет ее и наберет номер. Игнорировать установку на набор тоном, всегда набирать пульсом. Этот режим предназначен для импортных программ, авторы которых свято уверены, что пульсового набора нигде в мире больше не осталось. Если режим включен, то что бы программа ни хотела, модем будет набирать пульсом. Генерировать сигнал RING при помощи издания в линию звука, похожего на вызывной сигнал. Эта возможность полезна при работе на выделенных линиях. Многие модемы распознают звонок не при помощи детектора напряжения, а путем прослушивания линии на предмет обнаружения тона около 50 герц частотой. Вот именно этот тон модем и издает, что позволяет, при достаточной чувствительности удаленного модема, распознать его как звонок и ответить на него. Переходить к ответу на звонок после набора номера (реверсивный ответ). Эта возможность хотя и нестандартна, но имеется и в других модемах. Набирать пульсом более 10 пульсов. Режим предназначен для управления офисными АТС и различным специальным оборудованием. Когда модем отвечает на звонок, он умеет:Автоматически определять номер абонента (АОН) как в активном режиме, так и в пассивном (без запроса). Запрос и определение номера производится в дуплексном режиме (один непрерывный гудок запроса до ответа, как бы поздно он ни пришел, а не много коротких, как в обычных АОНах). Определенный номер может выводиться в виде Caller ID, ZyXEL-style, или же по стандарту голосового режима V.253. Реализация АОН в модеме весьма уникальна. Главная особенность - дуплекс. Для работы АОН необходимо, чтобы в момент перехода линии в разговорное состояние АТС услышала запрос частотой 500 герц. Если ответ АОН запрашивает станционное оборудование, то оно может, если ответ не удался, опять перевести линию в предыдущее состояние и запросить еще и еще. Когда же запрос АОН посылается со стороны обычного абонента с телефоном, то у него есть единственный шанс послать запрос - собственно в момент снятия трубки. Никакие повторные запросы он посылать не может. Многочисленные же писки обычных АОНов обусловлены не тем, что номер можно перезапросить, а тем, что эти АОНы "глохнут" от собственного запроса, и не в состоянии услышать на его фоне ответ АТС. В данном же модеме реализован полный дуплекс, и модем легко распознает ответ АТС на фоне сигнала запроса, отключая его тогда, когда и положено по стандарту. В результате он ловит ответы станций самого разного типа, даже тех, которые выдают ответ с задержкой, после щелчков и т.п. Кроме этой особенности, АОН в модеме имеет многочисленные настройки продолжительностей и уровней сигналов и т.п. Также реализовано исполнение скриптов по определившемуся номеру, о чем будет рассказано ниже. Пассивный АОН - это все то же самое, но без запроса. Очень полезно в ситуациях, когда АТС периодически обзванивает номера и хочет денег с тех, у кого стоят АОНы. Поскольку АОН реализован на АТС как сотенная группа, если хотя бы на один из номеров поступил запрос АОН, ответ выдаст вся сотня. Именно поэтому при ответе на какой-либо звонок Вы частенько слышите перед голосом абонента специфическую трель в линии. Это и есть ответ АОН, и он будет успешно определен модемом. Распознавать удаленное управление DTMF для немедленного перехода в режим голоса, факса или модема. Распознавать длинные и короткие DTMF и выводить для внешней программы. Когда кто-либо звонит на этот модем, а на нем включен полный адаптивный ответ (о чем ниже), то модем сначала определяет номер, затем АЛЕкает, и лишь затем принимает решение о том, какой тип входного звонка имеет место быть. Но часто бывает так, что на такой модем звонят, например, с сотового телефона. В результате две секунды модем пищит, еще две - "АЛЕкает" и слушает, а драгоценное бесплатное время первых нескольких секунд при звонке с сотового телефона - проходит. Данная возможность предназначена для того, чтобы немедленно, в первую же секунду, указать модему, кто и чем звонит. Например, в описываемом случае Вы просто нажимаете цифру 3, и модем немедленно запустит автоответчик, и у Вас будет шанс оставить короткое сообщение бесплатно. Полностью адаптивно различать все три типа звонков - голос, факс или модем, с возможной голосовой подсказкой (проговаривание "АЛЕ"), и достоверностью определения голоса еще выше, чем на исходящих звонках. Эта возможность появилась изначально в наших первых модемах - RC-21600. Она позволяет модему распознавать все три типа звонков - факс, голос и данные. О том, как именно это работает, лучше прочесть в документации. Здесь мы лишь отметим, что благодаря вышеописанному детектору сигналов на линии модем практически никогда не ошибается в определении типа звонка. Определять состояние линии: короткие и длинные гудки. Если при снятии трубки с удаленной стороны ее уже положили, то модем сообщит BUSY и не будет пытаться соединяться с короткими гудками. Все модемы при входящем звонке и ответе на него предполагают, что с той стороны что-то есть. А ведь часто бывает так, что из-за сбоев АТС связь оборвалась сразу же после снятия трубки. Данный же модем определяет при ответе ровно все то же, что и при наборе номера. В частности, сигналы ЗАНЯТО и ДЛИННЫЙ ГУДОК. И не коннектится по три минуты с короткими гудками. Отвечать в паузах между звонками, а не во время звонка. Эта возможность защищает аппаратуру модема от выхода из строя при снятии трубки в момент, когда звонит звонок. Модем старается всегда снять трубку в паузе между звонками. Когда модем соединяется в режиме данных, он умеет:Выбирать какой угодно протокол или набор протоколов по списку. Например, соединяться на 2400 через V8. Среди поддерживаемых протоколов: V21, V22(b), V32, V32T(AT&T Terbo 19200), V32A(USR ASL), V32H(USR HST), V32H(RC-21600 RHST-21600), V.34(до 33600). Кроме того, модем является V.90-ready. Это означает, что в них есть все для того, чтобы очередная прошивка начала работать на V.90. Мы гарантируем Вам, что при появлении такой прошивки Вы получите ее бесплатно, и сможете загрузить в Ваш модем без каких-либо переделок, изменений, доработок и т.п. Протокол V.90 находится в стадии разработки и был оставлен на последнюю очередь потому, что наши модемы покупают обычно для работы на средних и плохих линиях, а протокол V.90 принципиально работает только на хороших линиях. В модеме предусмотрена возможность выбирать любую комбинацию из поддерживаемых протоколов. Обычно модемы подразумевают, что если разрешен один протокол, то разрешен и ряд похожих или нижнего уровня. В данном модеме можно разрешить или запретить любой протокол или их комбинацию, что легко позволяет обходить проблемы, связанные с некачественной реализацией того или иного протокола на удаленной стороне. Выводить в строке коннекта все параметры. Например: CONNECT 19200:56/V34/V42B/3429/L:-22:-13/S:34.66:17.72/E:23/C:-0.23 /R:3/dP343-5500/V:UNK где: 19200: прогнозируемая скорость на прием (возможен также вывод скорости на передачу, и других вариантов скоростей на прием: реальной и максимальной), :56 - глубина модуляции на V.34 в процентах, то есть степень использования канала по параметру сигнал/шум, V34 - протокол соединения, V42B - протокол коррекции/компрессии, L:-22:-13 - уровни приема и передачи в dBm, S:34.66:17.72 - сигнал/шум и неравномерность его по спектру в dB с сотыми долями, E:23 - уровень эхогашения, C:-0.23 - смещение несущей в герцах, R:3 - задержка распространения сигнала в миллисекундах, dP343-5500 - набранный телефонный номер, /V:UNK - производитель удаленного модема (V.42 XID). Эта возможность полезна для того, чтобы сразу же, в момент соединения, получить представление о том, как будет проходить сеанс связи. Обычно модемы позволяют лишь собрать статистику после сессии, в то время как данный модем позволяет дополнительно делать и прогноз на сессию в самом начале. Увидев плохие или нетипичные параметры в строке соединения, Вы можете перезвонить еще раз, так как заведомо понятно, что Вам попался плохой межАТСный канал. Выбирать режим коррекции ошибок и компрессии: все соединения разрешены, разрешены низкоскоростные соединения без коррекции, разрешен SREJ, разрешена компрессия на прием, разрешена компрессия на передачу, разрешена коррекция ошибок. Эта возможность позволяет, во-первых, отсечь ложные соединения без коррекции ошибок, во-вторых - заблокировать работу SREJ при его некорректной реализации на удаленной стороне, и в-третьих, работать на V.42 даже на самом медленном протоколе, V.21, чего обычно модемы не позволяют делать. Соединяться на минимально-возможной скорости (4800 для V.34) в целях наиболее устойчивого прохождения соединения, и затем поднимать скорость до оптимальной. Эта возможность является важнейшим средством повышения устойчивости соединений. В самом начале соединения происходит довольно много разнообразных процедур согласования параметров локального и удаленного модемов, и, к сожалению, они плохо защищены от ошибок. В результате многие модемы соединяются без коррекции ошибок или вовсе не соединяются в условиях сильных помех. Принудительное занижение скорости соединения позволяет данному модему надежно пройти все процедуры согласования, после чего немедленно поднять скорость до оптимальной. Соединяться на минимальной символьной скорости, и лишь затем поднимать ее до оптимальной. Эта возможность является дополнительной к предыдущей. Она отключена по умолчанию, однако может быть использована на глухих и тихих линиях. Индивидуально настраивать параметры модуляции: нелинейное кодирование, расширенное созвездие, прекодирование, несимметричная битовая скорость, 16-точечное созвездие при ретрейне, сброс мощности (power drop). Как правило, модем сам неплохо выбирает все эти параметры. Однако иногда либо проблемы наблюдаются у удаленного модема, либо линия имеет сильную нестабильность. Кроме того, по умолчанию в модеме отключена возможность сбрасывать мощность удаленному, расширенное созвездие и 16-ти точечное созвездие. Реализованная в модеме подсистема OCC (управление каналом на передачу), описанная ниже, гораздо полнее использует все, что в принципе дают эти возможности, но несколько иным способом. Разрывать соединение при: величине SNR менее заданной, величине символьной скорости менее заданной, величине битовой скорости на прием и на передачу менее заданной, слишком плохом использовании времени модема (менее заданного процента времени на передачу данных, остальное - ретрейны и смены скоростей), таймауте неактивности программы. Эти настройки предназначены для того, чтобы вместо бесконечных попыток пересогласований или непрерывных перепосылок данных, модем перезвонил еще раз. Часто по самым разнообразным причинам гораздо эффективнее перезвонить еще раз, как делают все люди когда плохо слышно, нежели до победного конца преодолевать тяготы и лишения неудачного соединения. Запрещать автоматически протоколы, индивидуально, если для того или иного протокола не хватает входного уровня сигнала, то есть если входной уровень менее заданного для данного протокола. Как правило, есть некий минимальный уровень сигнала, при котором еще разумно использовать тот или иной протокол. К сожалению, редкие модемы это анализируют. Данная возможность предназначена для того, чтобы сделать это за удаленного, если он не умеет этого делать сам. Ждать дополнительное к S7 время, если какое-то начало коннекта удалось получить. Как правило, время ожидания соединения устанавливают небольшим, чтобы попросту не соединяться с короткими гудками или неотвечающим абонентом. Данная возможность позволяет гибче выбирать этот таймаут: если удаленный хотя бы начал отвечать, значит, есть шанс дождаться и установления соединения. В таком случае время ожидания продлевается дополнительно к стандартному из регистра S7. Подсчитывать распределение по спектру не только сигнала, но и шума, и выбирать символьную скорость в наилучшем диапазоне. Отсутствие этого умения называется "синдром 21600" для модемов USR. Эта возможность хотя и не уникальна для модемов, но нечасто встречается. Между тем, она совершенно необходима. Такие известные модемы, как USR Sportster и USR Courier, например, ее не имеют. Это приводит к т. наз. синдрому 21600: на линиях с сильной низкочастотной помехой модем, вместо того чтобы выбрать разумную символьную скорость, не замечает помехи и выбирает максимальную, на которой не может работать. В результате после многочисленных согласований он падает на самую минимальную символьную скорость 2400, которая и ограничивает скорость соединения величиной 21600, в то время как при правильной оценке помеховой обстановки зачастую можно было бы иметь и 31200. Автоматически понижать символьную скорость, если удаленный многократно не смог довести до конца процедуру хэндшейка. Эта возможность предназначена для борьбы с "кривыми" модемами, которые сами не знают, чего выбирают. Если таковой выбрал символьную скорость, на которой не в состоянии работать, наш модем после нескольких пересогласований уменьшит ее за него. Во время соединения модем умеет:Адаптивно вычислять таймауты V.42, для компенсации ошибки протокола с остановкой передачи при потере кадра REJ. К сожалению, протокол V.42 содержит огромную "дыру" в самой своей сути. Протокол устроен так, что если пропал кадр-перезапрос (REJ), то инициатор посылки так и не узнает про то, что надо бы перепослать данные. И лишь по истечении таймаута он уже другим способом перезапросит партнера, почему тот не отвечает. Этот таймаут в большинстве модемов огромен: от полусекунды до секунды. В результате пропадание кадра REJ приводит к длительной остановке передачи. Данный модем тщательно анализирует время реакции удаленного на посланный кадр REJ, и если реакция явно запаздывает, делает вывод, что REJ пропал. После чего принимает меры для разблокирования передачи. В результате, вместо секундных перерывов в передаче, приостановка случается от силы на 0.1 секунду. По первым же байтам сбойного кадра останавливать передачу и посылать перезапрос на кадр. Модем делает две вещи, хотя и разрешенные по стандарту V.42, но почему-то не реализованные более нигде (за одним исключением). Во-первых, если самое начало кадра с данными уже испорчено, то модем сразу же посылает перезапрос, не дожидаясь пока весь этот мусор примется целиком. Эта возможность есть еще лишь в одном известном нам модеме, производимой фирмой Аналитик. А во-вторых, если модем принял запрос на перепосылку, он немедленно прекращает передачу текущего, никому уже не нужного кадра и начинает передачу требуемого. Эта возможность, насколько нам известно, не реализована более нигде, хотя и разрешена по стандарту. В результате время реакции модема на ошибки сокращается в несколько раз, и число бесполезно переданных кадров-мусора - во столько же. Снижать уровень на передачу при плохом качестве эхогашения Очевидно, что снижение мощности передачи облегчает жизнь приемнику. Именно это модем и делает, если его жизнь непомерно тяжела. Поднимать уровень на передачу, если удаленный плохо слышит. Это здорово помогает при работе с "глухими" модемами или же на тихих линиях. Псевдо-HST на V.34: OCC, управление каналом на передачу. Модем отслеживает занятость канала на передачу, и, если [почти] ничего не передается, в разы сбрасывает мощность своего передатчика (тем самым резко облегчая условия приема), зажимает скорость на передачу на минимальной величине, перестает реагировать на ошибки удаленного на прием, и переходит в состояние NoTx. Если же модем замечает, что передача данных началась, он все возвращает назад. Кроме того, модем отслеживает занятость канала на прием. Если канал [почти] не занят, модем до максимума увеличивает мощность передатчика, облегчая тем самым прием удаленному, запрашивает на прием минимальную скорость перестает реагировать на ошибки приема, и переходит в состояние NoRX. При увеличении потока на прием все возвращается обратно. Реально, в 90% случаев работы в Интернете это добавляет до 10-20% скорости на прием при совершенно полной совместимости со стандартом V.34. Настройка условий и числа разворота канала на HST. При некоторой комбинации это позволяет работать на HST даже в Интернете. Возможно, это и покажется неактуальным в данный исторический момент, однако протокол HST дает при работе с Интернетом честных 1900 CPS, что может оказаться праздником на некоторых линиях, на которых не удается настроить эхогаситель на дуплексных протоколах. Грубое АРУ на прием, в том числе и с использованием возможностей аппаратуры. Модем автоматически так подгоняет уровни и усиление входного сигнала, чтобы он занимал весь динамический диапазон вычислений. Абсолютное большинство модемов занимаются почему-то редким маразмом: имея 16-ти разрядный процессор и примерно той же разрядности АЦП на входе, они спроектированы таким образом, что большинство нормальных и почти что все тихие входные сигналы занимают сильно меньше половины разрядной сетки того и другого. В результате можно смело считать, что АЦП на входе разрядов на десять, а процессор, после эхогашения, и вовсе на пять-шесть. Более того, модемы фирмы USR оснащены кодеком, который имеет аппаратные регулировки и по входу и по выходу, но ими никак не пользуется прошивка. Поскольку шум, создаваемый кодеком как на прием, так и на передачу, а также шумы квантования никак не меняются в зависимости от уровня входного сигнала, то такой режим использования всего, что припаяно к модемной плате, попросту снижает сигнал/шум до уровня, определяемого оставшимися разрядами. Это приводит к тому, что при приеме тихих, но качественных сигналов, они портятся до уровня сигнал/шума самого модема. Наш модем в своей полной версии имеет многоступенчатую регулировку уровней в аппаратуре (именно поэтому у него так много деталей по сравнению с другими модемами), а в варианте апгрейда - полностью использует все возможности кодека, поставленного фирмой USR. Имеет настройки совершенно всех параметров протокола: битовые и символьные скорости, глубины модуляции, типы несущих и т.п. Протокол V.34 весьма замысловато позволяет настраивать все это. Например, не все символьные скорости могут быть запрещены, и не всегда. Мы долго трудились над тем, чтобы все же позволить запрещать все индивидуально, если что-то плохо работает, например, из-за плохой реализации в удаленном модеме. Периодически проводит безусловные ретрейны в надежде, что линия изменилась в лучшую сторону и удастся настроиться лучше. Почему-то редкому модему приходит на ум идея, что если ретрейн был проведен в условиях помех, то неплохо было бы все перенастроить, когда с линией все станет в порядке. Возможности по оперативной подстройке в ходе коннекта весьма ограничены: многие параметры могут быть выбраны только в ходе ретрейна, возможности подстройки эхогасителя при наличии удаленного сигнала, превышающего по уровню эхо во много раз, достаточно малы. В результате до конца сеанса работают зачастую на 4800. Модемы видят, что стало хуже, чем было. Но в большом количестве случаев они не могут увидеть, что стало лучше! Чтобы это увидеть, нужно попробовать заново настроиться на линию. Что данная возможность и обеспечивает. Отслеживает постепенное медленное ухудшение качества связи и вместо непрерывных уменьшений скорости запрашивает ретрейн (Anti-SDS guard). Если линия подмокает или прогревается аппаратура на АТС и плывут параметры линии, то с точки зрения модема это может выглядеть как медленное ухудшение качества связи. Описываемая возможность заставляет модем вместо того, чтобы снижать скорость до нуля, попробовать настроиться заново на изменившиеся параметры линии. Отслеживает количество ошибок на прием и сначала пытается снизить скорость, затем запрашивает пересинхронизацию, а на пятый раз - ретрейн. Сколько бы ни делать предположений о качестве связи и рекомендуемой скорости, всегда найдется линия с такими параметрами, искажениями и затуханиями, где расчеты дадут сбой. Поэтому весьма полезно не просто выставлять скорость на прием, но и контролировать, что же из этого получилось на самом деле. С другой стороны, резкие помехи могут привести к сбою синхронизации в протоколе, что полезно восстановить сразу же, а не пытаться понижать скорость. Отслеживает "умирание" удаленного, когда тот запросил скорость на прием такую, на которой не в состоянии принимать. Первые три раза принудительно ограничивает скорость на передачу, а затем запрашивается ретрейн. Часто модемы (а модемы фирмы USR в первую очередь) запрашивают такую скорость на прием, на которой не в состоянии работать. В том числе и по причине отсутствия реализации предыдущей возможности. Дабы их "растормозить", наш модем ограничивает скорость на передачу, если у удаленного ничего не получается на ней принимать. Отслеживает количество ошибок на передачу, имеет предысторию ошибок и выбирает размер кадра таким, чтобы за расчетное время величина накладных расходов на мелкие кадры соответствовала накладным расходам на перепосылку крупных. Если передавать большими кадрами, то малы накладные расходы на заголовки кадра. Но зато если кадр пропал, то перепосылать нужно будет сразу же много. Если же передавать маленькими, то накладные расходы будут выше, зато перепосылать немного. Стало быть, если на линии частые помехи и кадры часто пропадают, то лучше передавать маленькими. А если редкие - то большими. Если задуматься над этой проблемой всерьез, то можно точно посчитать, какого размера должен быть кадр, зная предысторию их пропадания. Именно это наш модем и делает, вместо того чтобы "уменьшать если плохо", как делают другие модемы. Особо выдающимся, типа оригинального USR Sportster 92 Mhz, удается дойти аж до 1-байтовых кадров, и это при том, что там с гарантией есть еще 6 байт заголовка! Итого - 1 байт полезный на 6 бесполезных. Имеет "злопамятность", помнит, на какой скорости сколько ошибок у него было. И при выборе вновь этой скорости учитывает негативный опыт работы там. Бывает так, что удаленному модему не везет с какой-то скоростью передачи. Или же так, что помехи проявляются на какой-то скорости сильнее, чем на других. Во всех этих случаях "злопамятность" модема помогает ему избегать работы на таких скоростях. Имеет минимальные времена времени смены скоростей вниз и вверх (раздельно), а также барьер для слишком частой смены скоростей как по времени, так и по уровню SNR. Минимальные времена переключений предназначены для того, чтобы модем не менял скорости по каждому щелчку в линии. А по SNR'у - для того, чтобы он не "гулял" туда-сюда, когда SNR'у повезло оказаться на самой границе между двумя скоростями. Учитывает ошибки треллис-декодера для грубого выбора скорости. Если все пути в треллис-декодере дают примерно одну и ту же оценку ошибки, то это говорит о том, что правды нет ни в каком. И скорость полезно понизить. Имеет совершенно уникальную подсистему прямого, арифметически точного выбора скорости: вместо вероятностных оценок ошибок модем прямо рассчитывает число ошибок, которые были бы, если бы он перешел на скорость вверх относительно текущей, и, исходя из этого, принимает или не принимает такое решение. Это обычно дает еще 10% к CPS на прием. Если мы работаем на скорости 14400, к примеру, и знаем величину ошибки при детектировании отсчетов, то можно точно сказать, какие из этих ошибок приведут к сбоям детектирования на любой другой, более высокой, скорости. И дать точный ответ, стоит ли на нее переходить. Насколько нам известно, ни один более модем не имеет такой подсистемы прямого вычисления вероятности ошибки. А зря: модемы вынуждены ориентироваться на довольно сильный разброс ошибок, дабы на неустойчивых и шумных линиях не получать пачки сбоев. В то время как можно было бы точно оценить число сбоев и принять решение, что выгоднее: работать без сбоев на нынешней скорости или же со сбоями на следующей. В результате на хороших и стабильных линиях наш модем через некоторое время поднимается еще на одну скорость выше, чем на линиях с тем же SNR, но меньшей стабильностью. Имеет настройки запретов фаллбэков, ретрейнов, ресинхронизации, запросов LAP-M на resync и retrain. Бывают такие "замечательные" модемы, которые по каждому фаллбэку запускают ретрейн. Если такое счастье Вам попалось с удаленной стороны, то можно запретить нашему модему это все запрашивать, дабы не терять времени. Отслеживает резкий спад SNR и запускает resync. Если вдруг резко испортилось качество сигнала, то это, скорее всего, не потому, что линия резко промокла, а потому что модем потерял синхронизацию. И он ее восстанавливает. Причем, в отличие от модемов фирмы USR, не ретрейном, а фаллбэком на текущую же скорость. Отслеживает спад SNR ниже минимально-реальной величины и запускает resync. Это - второй критерий для предыдущей возможности. При запросах фаллбэков в условиях помех модем отслеживает тот факт, что удаленный модем не заметил запроса и благодаря специальному механизму памяти восстанавливает синхронизацию передачи и продолжает работать так, как будто никакого фаллбэка не запрашивалось. Запрос на смену скорости есть, фактически, передача некой зарезервированной последовательности данных. Что неплохо работает, когда скорость надо повысить, но часто не работает совсем, когда надо понизить. И скорость понижают как раз оттого, что данные принимаются с ошибками. Если удаленному модему не повезло и он не заметил нашего запроса (например, из-за сильных помех на линии), то вместо перехода в ретрейн, как это делают все другие модемы, наш модем выполняет ряд "акробатических трюков" для того, чтобы восстановить синхронизацию передаваемых данных, и это ему удается. В результате запрос можно будет повторить чуть позже вместо ретрейна длительностью в 8 секунд, тем более нежелательному в условиях помех. Не запрашивать фаллбэки сразу же после ретрейнов, не запрашивать ретрейны чаще указанного времени, не запрашивать фаллбэки ранее заданного времени после коннекта, не запрашивать ресинхронизацию после фаллбэков, не вести регистрацию сбойных кадров до истечения заданного времени после ретрейна и т.п. В случае неудачных фаллбэков увеличивать задержку на новые. Если наш модем хочет поднять скорость, а удаленный сопротивляется, то наш модем не пытается это делать снова и снова, по 10 раз в секунду, а каждый раз удваивает время ожидания дабы делать нечто полезное, а не запрашивать смены скоростей непрерывно. Вешать трубку при неожиданном обрыве связи по коротким гудкам в линии. Обычно по скачкам мощности сигнала можно понять, что удаленного модема больше нет, а есть короткие гудки. После этого лучше повесить трубку и не ждать по три минуты ретрейна. Во время ретрейнов выбирать символьные скорости путем анализа перекоса АЧХ, SNR и достижимых битовых скоростей. Если известно все о распределении сигнала по частотам, и шума по частотам, можно прямо вычислить, на какой же именно символьной скорости можно достичь наилучшей битовой. Данный модем это вычисляет точно (вместо оценок, как делают обычно другие модемы) Включать дополнительные фильтры для обрезания внеполосных помех, мешающих детектированию сигналов. Хотя полоса протокола V.32, например, лежит выше 600 герц, помехи внизу не дают нормально работать подсистемам модема. Упомянутые фильтры их отрезают, что многие другие модемы почему-то не делают. Озвучивать отдельно, и с задаваемой громкостью: ретрейны, фаллбэки, ошибки в данных на прием и на передачу. Если Вы попробуете этим воспользоваться, то с удивлением обнаружите, что Вы знаете про то, что происходит с Вашими данными лучше, чем все измерители CPS, вместе взятые. Причем на интуитивном и простом для понимания уровне. Сокращать в разы скорость запроса фаллбэка, если предполагается изменять скорость более чем на одну ступень. Если помеховая обстановка изменилась так сильно, что требуется сильно изменить скорость приема, то модем делает это быстрее чем обычно, дабы не дожидаться сбоев в приеме. Запрашивать ретрейны и фаллбэки во время, когда передача данных минимальна. Например, фаллбэки на прием делаются тогда, когда удаленный запрашивает для себя на передачу. Ретрейны - когда нет данных пользователя и т.п. Временно выходить в командный режим и опускать сигнал CD, что позволяет звонить в Интернет из-под мейлера под Win32 (мейлер набирает номер, и вызывает внешнюю программу, которая устанавливает PPP соединение). К сожалению, Windows во всех ее разновидностях не позволяет установить PPP соединение (соединение с провайдером), если номер уже набран и модем соединился с провайдером. Это очень неприятно, так как не позволяет набирать номер из единого центра, например - мейлера, с тем, чтобы потом запустить внешнюю программу для регистрации. Модем имеет возможность обмануть Windows таким способом: мейлер-таки звонит в Интернет, и запускает внешнюю программу. В этот момент порт закрывается и сигнал DTR опускается. Это заставляет модем выйти в командный режим, не разрывая соединения. Затем запускается дозвонка до провайдера, как обычно. Но необычны здесь команды, посылаемые в модем. Среди прочих, в .Inf файле нашего модема есть тип модема "PPP". Если его выбрать, то вместо набора номера Windows пошлет в модем команду возврата в режим Online, и будет уверена в том, что набрала номер. Получит строку CONNECT и замечательно зарегистрирует Ваш компьютер у провайдера так, как будто бы сама туда позвонила. Для этого действа на нашем сервере имеется специальная программа, которая позволяет звонить провайдеру из командной строки. Игнорировать первое пропадание сигнала DTR, что позволяет запускать внешние программы из-под мейлера под Win32 без обрыва соединения. Эта возможность похожа на предыдущую, но предназначена для внешних программ, которые, напротив, желают видеть модем в режиме Online. После разрыва соединения модем умеет:Автоматически печатать причину разрыва соединения, более 40 разных детально описанных причин. Модем очень подробно рассказывает про то, что же именно было плохо. Почему-то некоторые модемы вообще не имеют причины разрыва соединения. Выдавать подробнейшую, понятную человеку статистику соединения, с выводом всех параметров в простых и понятных единицах, и с комментарием по каждому параметру в документации на модем. Там, в статистике, описано все, что только можно узнать про телефонную линию. Причем в понятном нормальному человеку виде. Дабы не просто посмотреть на забавные числа, но и сделать вывод о том, почему плохо и как с этим бороться. Выдавать эхо-отклик линии на импульсный сигнал (считается из коэффициентов эхогасителя) с разметкой по времени и уровню. Полезная информация для "поиска врага" на АТС: должен быть сильный пик от локального заворота сигнала и, возможно, слабый - от удаленного отражения. Если же их несколько, значит, на АТС стоит несогласованная аппаратура, которая тоже отражает сигнал. Выдавать графики: сигнала, шума, прекодера, предискажений по прогнозам во время хэндшейка. А также их комбинации по задаваемой пользователем формуле. Весьма полезно для того, чтобы исследовать Вашу телефонную линию. Вы узнаете много интересного, когда наберете некоторую статистику. Например, что если позвонить от Вас к соседу, то это не то же самое, что от него к Вам. Что в первом случае АЧХ будет ровной, а во втором - перекос децибелл так под 30. Выдавать реальные графики сигнала и шума по реально принятым данным. Сам по себе протокол V.34 дает лишь прогнозы. Они считаются по тестовой последовательности во время ретрейнов. Однако модем умеет считать и то, что на самом деле получается. Именно эта возможность помогла нам заметить, что модемы фирмы USR часто путают номера фильтров предискажений, и вместо выравнивания АЧХ вызывают еще больший ее перекос. Выдавать оценки SNR, перекоса SNR и битовой скорости на все возможные символьные скорости. Эта возможность была описана выше, и позволяет Вам узнать распределение максимальных скоростей битовых по скоростям символьным. Сервис по управлению. Модем имеет:Полностью мнемоническую систему команд. Никаких S56.4=1, но лишь *PRT+V34. Все поля имеют имена, все команды имеют подсказки, все регистры имеют подробнейшее описание всех параметров и того, на что они влияют. Это все размещено в файле mdmcmd.dat на сервере, и именно по этому файлу модем работает, разбирая команды. На сервере также представлена его HTML версия. Все регистры имеют размерности, понятные человеку, единую сетку времени и уровней. Все команды имеют цепочную форму, например, чтобы запретить V.34 и разрешить V.21 можно написать at*PRT-V34+V21 Расширенные сообщения об ошибках. Модем выдает после слова ERROR остаток строки, которую ему не удалось разобрать из-за встретившейся ошибки. Эта возможность весьма полезна, когда Вы не можете сразу понять, какая же именно часть командной строки модему "не понравилась". Также это полезно при отладке внутримодемных скриптов.
Файловая система. Модем имеет встроенную файловую систему, которая содержит как все профайлы (их может быть до сотни), так и специальные файлы-скрипты, исполняемые модемом по тому или иному случаю. Среди прочего, Вы можете написать скрипты по таким событиям: загрузка модема, сброс модема (ATZ), определение конкретного номера (скрипт выполнится, если модем определит такой номер), определение набранного номера и номера, набранного на параллельном телефоне, вывод определенного кода сообщения (например, VOICE), переход в адаптивный факсовый режим, набор команд группы &F (пост-настройка), и ряд других. Также вы можете написать свои собственные файлы-скрипты, которые можно вызывать в командной строке при помощи подстановок (at'scriptname'), например at'UplinkDialPrefix'dp_номер.
Длинная командная строка, до 80 символов. Эта возможность полезна при работе с программами, которые не позволяют послать в модем более одной инициализационной строки. С той же целью модем не забывает команды после команды Z. Если все же не хватило длины строки, можно использовать скрипт и в инициализационной строке указать лишь его имя.
Голосовые файлы в файловой системе, которые можно проиграть командой #Play. Эта возможность полезна при использовании скриптов. Таким же способом Вы можете реализовать примитивную голосовую почту прямо средствами модема, например, задав команду проигрывания в скрипте, исполняемом при определении конкретного номера телефона. Также в модеме есть возможность задать принудительный переход в какой-либо из режимов ответа.
Подмена команд. Модем имеет файлы подстановок, по которым транслируются команды. Это может быть использовано для эмуляции команд какого-нибудь другого модема, или же для того, чтобы приспособиться к программе, которая шлет в модем нечто непредусмотренное.
Возможность проиграть предупреждающий тон-сирену по команде. По умолчанию эта функция вызывается при попытке проинициализировать модем при помощи команды &F0 и предупреждает Вас о том, что программа, которая это делает, судя по всему, очень старая и не настроена на Ваш модем. Однако Вы можете использовать эту команду везде, где пожелаете. Например, выдавать это сообщение при некоем важном для Вас определившимся номере телефона. Стоит отметить, что в отличие от реализации этих функций при помощи программы-автоответчика снаружи модема, данная возможность, как и все скрипты в модеме, работают всегда и везде, с любой программой, и что бы она ни делала с модемом.
Двухтональный генератор любых телефонных сигналов с точностью до герца и с произвольными уровнями. В совокупности с нижеследующей возможностью это позволяет Вам полностью управлять дистанционно телефонным оборудованием, например Вашей офисной АТС. Хотя генератор сигналов имеется в любом модеме с голосом V.253, однако полностью настраиваемым как по частотам, так и по уровням он сделан лишь в нашем модеме.
Детектор любой пары телефонных сигналов с точностью до 7 герц с выводом состояния линии каждые 70ms. Эта возможность является дополнительной к предыдущей.
Автоматическая пульсация сигналом CTS для вывода из "ступора" Windows, когда какая-либо из программ пытается получить статус модема при помощи функции getcommstate, которая из-за ошибки иногда заклинивает передачу в модем навечно. К сожалению, в Windows функция получения статуса COM порта содержит фатальную ошибку: она читает этот статус прямо из порта, а не из копии в переменной драйвера. Это приводит к тому, что если в момент чтения как раз изменилось состояние сигнала CTS, то Windows этого не заметит, так как вместе с чтением статуса сбрасывается и прерывание по изменению статуса. В результате управление потоком заблокируется навечно. Чтобы его растормозить, и предназначена данная функция.
Глобальный таймер неактивности при поднятой трубке: в каком бы режиме модем ни находился, если при этом у него снята трубка и нет никакой видимой активности внешней программы, модем самоперезагрузится. Помогает при зависании внешних программ с поднятой трубкой.
Коэффициент скорости. Модем может быть запрограммирован на большую или меньшую глобально скорость работы путем установки делителя частоты, вырабатываемой кварцевым генератором. В принципе, Вы можете заставить работать его и на 100 килобит на V.32, если только у него хватит ресурсов быстродействия. Уменьшение же этого параметра заставит модем использовать лишь нижнюю полосу частот в телефонном канале и передавать медленнее.
Полный, новый и стандартный голосовой режим V.253. Это - наиболее полный, универсальный и единственный стандартный (в смысле ITU) новый голосовой режим, переход на который начался у производителей модемов. В нашем модеме он реализован не только полностью, но и со всеми расширениями, допускаемыми прошивкой и аппаратурой. Фактически с его помощью можно реализовать совершенно универсальное устройство для работы с телефонными сигналами любых видов и по любым алгоритмам.
Продолжение на iXBT.
Михаил Лихачев, Дмитрий Утянский |
|
2000-2008 г. Все авторские права соблюдены. |
|