123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- * Asterisk -- A telephony toolkit for Linux.
- *
- * Implementation of Voice over Frame Relay, Adtran Style
- *
- * Copyright (C) 1999, Mark Spencer
- *
- * Mark Spencer <markster@linux-support.net>
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License
- */
- #ifndef _ADTRANVOFR_H
- #define _ADTRANVOFR_H
- #define VOFR_CONTROL_ADTRAN 0x0
- #define VOFR_CONTROL_VOICE 0x1
- #define VOFR_CONTROL_RFC1490 0x3
- #define VOFR_TYPE_SIGNAL 0x0
- #define VOFR_TYPE_VOICE 0x1
- #define VOFR_TYPE_ANSWER 0x2
- #define VOFR_TYPE_FAX 0x3
- #define VOFR_TYPE_DTMF 0x4
- #define VOFR_CARD_TYPE_UNSPEC 0x0
- #define VOFR_CARD_TYPE_FXS 0x1
- #define VOFR_CARD_TYPE_FXO 0x2
- #define VOFR_CARD_TYPE_ENM 0x3
- #define VOFR_CARD_TYPE_VCOM 0x4
- #define VOFR_CARD_TYPE_ASTERISK 0xf
- #define VOFR_MODULATION_SINGLE 0x0
- #define VOFR_MODULATION_V21 0x1
- #define VOFR_MODULATION_V27ter_2 0x2
- #define VOFR_MODULATION_V27ter_4 0x3
- #define VOFR_MODULATION_V29_7 0x4
- #define VOFR_MODULATION_V29_9 0x5
- #define VOFR_MODULATION_V33_12 0x6
- #define VOFR_MODULATION_V33_14 0x7
- #define VOFR_ROUTE_NONE 0x0
- #define VOFR_ROUTE_LOCAL 0x1
- #define VOFR_ROUTE_VOICE 0x2
- #define VOFR_ROUTE_DTE1 0x4
- #define VOFR_ROUTE_DTE2 0x8
- #define VOFR_ROUTE_DTE 0xC
- #define VOFR_MASK_EI 0x80
- #define VOFR_MASK_LI 0x40
- #define VOFR_MASK_CONTROL 0x3F
- #define VOFR_SIGNAL_ON_HOOK 0x00
- #define VOFR_SIGNAL_OFF_HOOK 0x01
- #define VOFR_SIGNAL_RING 0x40
- #define VOFR_SIGNAL_SWITCHED_DIAL 0x08
- #define VOFR_SIGNAL_BUSY 0x02
- #define VOFR_SIGNAL_TRUNK_BUSY 0x04
- #define VOFR_SIGNAL_UNKNOWN 0x10
- #define VOFR_SIGNAL_OFFHOOK 0x81
- #define VOFR_TRACE_SIGNAL 1 << 0
- #define VOFR_TRACE_VOICE 1 << 1
- #define VOFR_MAX_PKT_SIZE 1500
- /*
- * Wire level protocol
- */
- struct vofr_hdr {
- u_int8_t control; /* Also contains unused EI and LI bits */
- #if __BYTE_ORDER == __LITTLE_ENDIAN
- u_int8_t dtype:4; /* Data type */
- u_int8_t ctag:4; /* Connect tag */
- u_int8_t dlcih:4; /* Hi 2 bits of DLCI x-ref */
- u_int8_t vflags:4; /* Voice Routing Flags */
- u_int8_t dlcil; /* Lo 8 bits of DLCI x-ref */
- u_int8_t cid; /* Channel ID */
- u_int8_t mod:4; /* Modulation */
- u_int8_t remid:4; /* Remote ID */
- #elif __BYTE_ORDER == __BIG_ENDIAN
- u_int8_t ctag:4; /* Connect tag */
- u_int8_t dtype:4; /* Data type */
- u_int8_t vflags:4; /* Voice Routing Flags */
- u_int8_t dlcih:4; /* Hi 2 bits of DLCI x-ref */
- u_int8_t dlcil; /* Lo 8 bits of DLCI x-ref */
- u_int8_t cid; /* Channel ID */
- u_int8_t remid:4; /* Remote ID or Relay CMD*/
- u_int8_t mod:4; /* Modulation */
- #else
- #error "Please fix <bytesex.h>"
- #endif
- #ifdef __GNUC__
- u_int8_t data[0]; /* Data */
- #endif
- };
- #define VOFR_HDR_SIZE 6
- /* Number of milliseconds to fudge -- experimentally derived */
- #define VOFR_FUDGE 2
- #endif
|