dial - установление связи через терминальную линию
#include <dial.h>
int dial (call) CALL *call;
void undial (fd) int fd;
Функция dial возвращает дескриптор файла для терминальной линии, открытой на ввод/вывод. Аргументом функции dial является указатель на структуру типа CALL (тип определен во включаемом файле ).
После завершения работы с линией программа должна вызвать функцию undial, чтобы освободить семафор, установленный в момент захвата терминального устройства.
Тип структуры CALL определяется во включаемом файле следующим образом:
typedef struct { struct termio *attr; /* Указатель на структуру атри- бутов termio */ int baud; /* Скорость передачи */ int speed; /* Модем 212A: 300 или 1200 */ char *line; /* Имя устройства для терминаль- ной линии */ char *telno; /* Указатель на цепочку - номер телефона */ int modem; /* Управление модемом для прямо- го соединения */ int *device; /* Сюда будет записано имя уст- ройства, через которое уста- новлено соединение */ int dev_len; /* Длина имени устройства */ } CALL;
Элемент speed предназначен только для использования при установлении соединения по телефонной линии; в этом случае его значение должно равняться 300 или 1200 для модемов 113A или 212A. Отметим, что модем 113A, а также модем 212A, установленный в низкоскоростной режим, могут передавать на любой скорости от 0 до 300 бит в секунду. Однако модем 212A, установленный в высокоскоростной режим может передавать и принимать только на скорости 1200 бит в секунду.
Элемент baud задает желаемую скорость передачи. Например, можно установить baud равным 110, а speed равным 300. Однако если компонент speed равен 1200, baud также должен равняться 1200.
Если нужная терминальная линия является прямым соединением, то указатель на имя устройства должен быть помещен в элемент line. Допустимые значения для таких терминальных устройств содержатся в файле L-devices. В этом случае не требуется заполнять элемент baud, его значение определяется из файла L-devices.
Элемент telno является указателем на цепочку символов, представляющих телефонный номер, по которому должно произойти соединение. Терминирующий символ не нужно включать в цепочку, передаваемую dial, поскольку функция добавит его сама.
Элемент modem специфицирует управление модемом в случае прямого соединения. Если требуется управление модемом, этот элемент должен быть ненулевым.
Элемент attr является указателем на структуру типа termio, описанную во включаемом файле . Элемент attr может быть равен NULL, но если это не так, то все атрибуты, заданные компонентами структуры termio, будут установлены для терминальной линии перед попыткой выполнить соединение, что существенно для таких атрибутов, как четность и скорость передачи.
Элемент device используется для хранения имени устройства, через которое было установлено соединение.
Элемент devlen содержит длину имени устройства, записанного в массив device.