Unimodem Diagnostics, (c) 2000-2002 Stanislav V. Mekhanoshin

Что это
-------

Данная программа служит для расшифровки диагностики модема, поддерживающего
команду AT#UD спецификации unimodem в соответствии с документом:

Unimodem Diagnostics Command Reference Specification
Microsoft Corporation
Version 1.0
2 July, 1998

Системные требования
--------------------

Программа собрана в трех различных вариантах:

1. #udd2.exe - dual-exe для DOS и OS/2 16-бит. Работает под управлением
следующих операционных систем:

DOS             - как приложение DOS
W9x             - как приложение DOS
OS/2            - как приложение OS/2
WNT/W2K         - как приложение OS/2

2. #uddw.exe - dual-exe для DOS 16-бит и WIN32 Console. Работает под
управлением следующих операционных систем:

DOS             - как приложение DOS
W9x/WNT/W2k     - как коносольное приложение Windows

3. #udw.exe - WIN32 GUI. Работает под управлением следующих операционных
систем:

W9x/WNT/W2k     - оконное приложение Windows

В последнем случае требуется наличие comctl32.dll версии не ниже 4.70
(Internet Explorer 3.0 или выше).

Также является COM-сервером для расшифровки диагностики.

Лицензионное соглашение
-----------------------

Данная программа распространяется свободно. Вы можете распространять и/или
модифицировать ее, как это указано в GNU General Public License, опубликованной
Free Software Foundation, версии 2 данной лицензии, либо (по Вашему желанию)
любой другой, более поздней, версии.

Данная программа распространяется в надежде, что она будет полезна, но БЕЗ
КАКИХ БЫ ТО НИ БЫЛО ГАРАНТИЙ, в том числе даже без гарантии ее полезности или
применимости для любых конкретных целей. Более подробно см. GNU General Public
License.

Вы должны были получить копию GNU General Public License вместе с данной
программой. Если нет, пишите по адресу Free Software Foundation, Inc.,
675 Mass Ave, Cambridge, MA 02139, USA.

Использование
-------------

#ud [+prefix | -prefix string | -noprefix]
    [-clipview | -noclipview]
    [<stream | file]

Stream - #ud работает только с перенаправленным стандартным вводом. Так
сделано просто потому, что вряд ли кто-то будет набивать диагностику с
терминала. Способ переназначения может быть любым - не только через '<'.
Например, также сработает команда

  type diag.txt|#ud

Версия для Windows GUI не работает со стандартным вводом, за неимением
такового.

File - если указан, то расшифровывается статистика из указанного файла.

Версии для Win32 могут также подхватывать статистику из клипборда, если
стандартный ввод (для консоли) не перенаправлен и явно не указан файл
статистики.

Версия для Windows GUI позволяет также загружать файлы статистики, будучи уже
запущенной, либо повторно анализировать буфер обмена. Файлы статистики могут
быть открыты либо из меню, либо при помощи механизма drag-n-drop. Для чтения
буфера обмена используйте либо меню, либо клавишу F5, либо просто вставьте
статистику в окно #udw из клипборда.

Prefix - префикс, который будет выдаваться перед каждой строкой, выводимой на
stdout. Полезно, например, при переназначении вывода программы в лог-файл
мэйлера для идентификации диагностической информации. Параметр необязательный.

Например, префикс `DIAG' может быть задан либо как +DIAG, либо как
-prefix DIAG.

Ключ -noprefix служит для отмены префикса по умолчанию, если он был задан в
ini-файле (только в #udw).

Ключи -clipview и -noclipview, соответственно, служат для установки #udw как
clipboard viewer. Последний отменяет значение по умолчанию из ini-файла.

Что такое clipboard viewer? Это очень просто - программа автоматически
реагирует на изменение содержимого клипборда и переанализирует статистику.
Включается либо ключом -clipview, либо из меню, либо по клавише F3, либо
кликом на области статусной строки, в которой индицируется его состояние.

Ini-файл со значениями по умолчанию должен лежать в том же каталоге, что и
#udw.exe (он поддерживается только версией для Win32/GUI), и иметь то же имя,
что и exe-файл. Т.е. #udw.ini. Пример такого файла:

============ #udw.ini =============
[default]
ClipboardViewer=1
OpenFileName=c:\temp\stat.log
Prefix=DIAG
============== end ================

Такой ini-файл установит значения по умолчанию:

-clipview -prefix DIAG c:\temp\stat.log

#udw не будет сам создавать ini-файл, и не требует его.


#ud читает данные из входного потока до тех пор, пока не встретится первая
строка вида

  DIAG <2A4D3263 ...>

Далее, входной поток читается и анализируется наличие в нем диагностических
строк unimodem. Разбор продолжается либо до конца входного потока, либо до
первой строки "OK".

Возможно использование #ud совместно с утилитой lnterm (line terminal),
которая имеет возможность переназначения ввода/вывода. Например, возможно
использование следующей команды:

  echo AT#UD|lnterm|#ud>stat.log

Сам я использую BinkleyTerm, и собираю статистику, запуская специальный
cmd-файл после соединения. При этом статистика дописывается в лог-файл
мэйлера. Этот cmd-файл я позволю себе привести в качестве примера (я использую
4NT, а не стандартный cmd.exe от NT):

-------------------------------- mdm_stat.cmd --------------------------------
@echo off
echo writing Binkley.log...
echo AT#UD|c:\mail\lnterm com:1 baud:115200 rx-timeout:20|c:\mail\#ud "++ %@replace[ ,0,%@format[2,%_day]] %@word[%@dec[%_month],Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec] %_time.00 DIAG">>c:\mail\log\Binkley.Log
------------------------------------ eof -------------------------------------

что добавляет к файлу Binkley.log приблизительно следующее:

--------------------------------- Binkley.log --------------------------------
+ 17 Jun 15:03:15.00 DIAG Unimodem Diagnostics/W32, version 1.0.1.0, compiled at Jun 17 2000 14:31:05
+ 17 Jun 15:03:15.00 DIAG (c) 2000 Stanislav V. Mekhanoshin (rampitec@tu.spb.ru, 2:5030/172.9@fidonet)
+ 17 Jun 15:03:15.00 DIAG ----------------------------------------------------------------------------
+ 17 Jun 15:03:15.00 DIAG Diag Command Specification rev.: 1.0
+ 17 Jun 15:03:15.00 DIAG Call Setup Result code         : Data Answering signal detected
+ 17 Jun 15:03:15.00 DIAG Multi-media mode               : Data Only
+ 17 Jun 15:03:15.00 DIAG DTE-DCE interface mode         : Async data
+ 17 Jun 15:03:15.00 DIAG TX/RX signal power level, -dBm : 14/25
+ 17 Jun 15:03:15.00 DIAG Estimated noise level, -dBm    : 26
+ 17 Jun 15:03:15.00 DIAG TX/RX Negotiation              : V.34/V.34
+ 17 Jun 15:03:15.00 DIAG TX/RX Symbol Rate              : 3429/3429
+ 17 Jun 15:03:15.00 DIAG TX/RX Carrier frequency, Hz    : 1959/1959
+ 17 Jun 15:03:15.00 DIAG TX data rate (Last/Init)       : 28800/26400
+ 17 Jun 15:03:15.00 DIAG RX data rate (Last/Init)       : 19200/28800
+ 17 Jun 15:03:15.00 DIAG Temporary carrier loss count   : 0
+ 17 Jun 15:03:15.00 DIAG Carrier Rate Re-neg count      : 28
+ 17 Jun 15:03:15.00 DIAG Retrains Requested/Granted     : 1/0
+ 17 Jun 15:03:15.00 DIAG Protocol/Compression           : V.42 LAPM/V.42bis
+ 17 Jun 15:03:15.00 DIAG Error control frame size, bytes: 128
+ 17 Jun 15:03:15.00 DIAG Error control timeouts in TX   : 0
+ 17 Jun 15:03:15.00 DIAG Error control NAKs received    : 0
+ 17 Jun 15:03:15.00 DIAG TX/RX flow control             : V.24 ckt 106/133 / V.24 ckt 106/133
+ 17 Jun 15:03:15.00 DIAG TX/RX chars sent               : 588/110029
+ 17 Jun 15:03:15.00 DIAG TX/RX chars lost (data overrun): 0/0
+ 17 Jun 15:03:15.00 DIAG TX/RX I-Frame count            : 36/1922
+ 17 Jun 15:03:15.00 DIAG TX/RX I-Frame error count      : 0/37
+ 17 Jun 15:03:15.00 DIAG Termination Cause              : Disconnect Frame Received
------------------------------------ eof -------------------------------------

Использование COM-сервера
-------------------------

Вы  можете  использовать  udw.exe  в  качестве  COM-сервера.  Для  этого
программу необходимо зарегистрировать.  Запустите  `udw.exe  /RegServer'
или instw32.bat. Для того, чтобы удалить регистрацию запустите  `udw.exe
/UnregServer'.

Примеры использования сервера на VBScript, JavaScript (из  html)  и  C++
находятся  в  каталоге  devel/sample.   В   каталоге   devel   находятся
необходимые файлы для компиляции под C/C++.

Для C/C++  включите  в  проект  файл  udw_i.c  и  заголовок  udw.h.  Там
описывается интерфейс IUDDiag, имеющий два свойства:

 BSTR UDDiag(BSTR Response) - используется для  расшифровки  диагностики
                              модема, получает на входе нерасшифрованную
                              статистику #UD.

 BSTR Prefix                - указывает  на  префикс,  который   следует
                              использовать    перед    каждой    строкой
                              диагностики   (аналогично   ключу   prefix
                              командной строки).

Благодарности
-------------

 - Виталию Пономареву за предоставленную спецификацию на формат диагностики
   unimodem.

 - Юрию Бондаренко за предоставленную информацию и тестирование программы.


Как со мной связаться
---------------------

mail-to: rampitec@tu.spb.ru
FIDO:    2:5030/172.9@fidonet.org
web:     http://www.geocities.com/rampitec/
