%%% $Id$ %%% @configure_input@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% iisdn.hrl Erlang header file defining the structures in iisdn.h %%% %%% %%% %%% This file defines the SMI interface. %%% %%%--------------------------------------------------------------------- %%% %%% Copyright (c) 2001-2007, Vance Shipley %%% %%% All rights reserved. %%% %%% Redistribution and use in source and binary forms, with or without %%% modification, are permitted provided that the following conditions %%% are met: %%% %%% Redistributions of source code must retain the above copyright %%% notice, this list of conditions and the following disclaimer. %%% %%% - Redistributions in binary form must reproduce the above %%% copyright notice, this list of conditions and the following %%% disclaimer in the documentation and/or other materials %%% provided with the distribution. %%% - Neither the name of Motivity Telecom nor the names of its %%% contributors may be used to endorse or promote products %%% derived from this software without specific prior written %%% permission. %%% %%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS %%% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT %%% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS %%% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE %%% COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, %%% INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, %%% BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; %%% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER %%% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT %%% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN %%% ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE %%% POSSIBILITY OF SUCH DAMAGE. %%% %%%--------------------------------------------------------------------- %%% %%% %%% The Netaccess driver API header file defines the format %%% %%% of the binary interface to the embedded processor on the card. %%% %%% When we receive an incoming SMI control message from the driver %%% %%% we want to parse out all the elements of the message. The %%% %%% header file defines how this is done. %%% %%% %%% %%% The full message received is matched against the L3L4 SMI Common %%% %%% message structure: %%% %%% %%% %%% <> %%% %%% %%% %%% [Note: determining size is left out of current discussion] %%% %%% %%% %%% CommonHeader is matched against the L3L4 Message Common Header: %%% %%% %%% %%% <> %%% %%% %%% %%% Inspecting Msgtype we discover the appropriate mask to use for %%% %%% matching the MessageSpecificData. %%% %%% %%% %%% The L3L4 Message Common Header is defined in the typedef for a %%% %%% structure in named L3_to_L4_struct. In the iisdn.erl %%% %%% module the function l3_to_l4/1 defines the unpacking of %%% %%% this structure into a record of the same name. Similiarly a %%% %%% record of type #l4_to_l3{} is passed to the function %%% %%% l4_to_l3/1 to create a binary suitable to be sent to the %%% %%% board. %%% %%% %%% %%% Most structures which appear in should have both a %%% %%% corresponding record definition and a function with arity one %%% %%% which accepts a record or a binary and returns a record or a %%% %%% binary. %%% %%% %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% firmware version -define(IISDN_VERSION, @IISDN_VERSION@). %% basic types -define(IISDNu8bit, @SIZEOF_IISDNu8bit@/native-unsigned-integer-unit:8). -define(IISDNs8bit, @SIZEOF_IISDNs8bit@/native-signed-integer-unit:8). -define(IISDNu16bit, @SIZEOF_IISDNu16bit@/native-unsigned-integer-unit:8). -define(IISDNs16bit, @SIZEOF_IISDNs16bit@/native-signed-integer-unit:8). -define(IISDNu32bit, @SIZEOF_IISDNu32bit@/native-unsigned-integer-unit:8). -define(IISDNs32bit, @SIZEOF_IISDNs32bit@/native-signed-integer-unit:8). -define(IISDNp16bit, @SIZEOF_IISDNp16bit@/native-signed-integer-unit:8). -define(IISDNp32bit, @SIZEOF_IISDNp32bit@/native-signed-integer-unit:8). %% type sizes -define(SIZEOF_IISDNu8bit, @SIZEOF_IISDNu8bit@). -define(SIZEOF_IISDNs8bit, @SIZEOF_IISDNs8bit@). -define(SIZEOF_IISDNu16bit, @SIZEOF_IISDNu16bit@). -define(SIZEOF_IISDNs16bit, @SIZEOF_IISDNs16bit@). -define(SIZEOF_IISDNu32bit, @SIZEOF_IISDNu32bit@). -define(SIZEOF_IISDNs32bit, @SIZEOF_IISDNs32bit@). -define(SIZEOF_IISDNp16bit, @SIZEOF_IISDNp16bit@). -define(SIZEOF_IISDNp32bit, @SIZEOF_IISDNp32bit@). %% array sizes -define(IISDN_NUM_DS1_INTERFACES, @IISDN_NUM_DS1_INTERFACES@). -define(IISDN_MAX_VC_PER_CHAN, @IISDN_MAX_VC_PER_CHAN@). -define(IISDN_MAX_SPID_LEN, @IISDN_MAX_SPID_LEN@). -define(IISDN_MAX_DN_LEN, @IISDN_MAX_DN_LEN@). -define(IISDN_MAX_HDLC_CHANNEL, @IISDN_MAX_HDLC_CHANNEL@). -define(IISDN_MAX_LINES, @IISDN_MAX_LINES@). -define(IISDN_MAX_BOND_CHAN, @IISDN_MAX_BOND_CHAN@). -define(IISDN_RELAY_MAX_MATCHES, @IISDN_RELAY_MAX_MATCHES@). -define(IISDN_RELAY_MAX_INSERT, @IISDN_RELAY_MAX_INSERT@). %% enumerations -define(IISDN_RELAYdestDCHAN, @IISDN_RELAYdestDCHAN@). -define(IISDN_RELAYdestLID, @IISDN_RELAYdestLID@). -define(IISDN_RELAYdestLID_DEFERRED_PRIORITY, @IISDN_RELAYdestLID_DEFERRED_PRIORITY@). -define(IISDN_RELAYdestDROP, @IISDN_RELAYdestDROP@). -define(IISDN_RELAYdestLIST, @IISDN_RELAYdestLIST@). -define(IISDN_RELAYdestBLOCK, @IISDN_RELAYdestBLOCK@). -define(IISDN_RELAYdestDCHAN_OF_LID, @IISDN_RELAYdestDCHAN_OF_LID@). -define(IISDNdevDEFAULT, @IISDNdevDEFAULT@). -define(IISDNdevHDLC_0, @IISDNdevHDLC_0@). -define(IISDNdevHDLC_1, @IISDNdevHDLC_1@). -define(IISDNdevHDLC_2, @IISDNdevHDLC_2@). -define(IISDNdevHDLC_3, @IISDNdevHDLC_3@). -define(IISDNdevHDLC_4, @IISDNdevHDLC_4@). -define(IISDNdevHDLC_5, @IISDNdevHDLC_5@). -define(IISDNdevHDLC_6, @IISDNdevHDLC_6@). -define(IISDNdevHDLC_7, @IISDNdevHDLC_7@). -define(IISDNdevHDLC_8, @IISDNdevHDLC_8@). -define(IISDNdevHDLC_9, @IISDNdevHDLC_9@). -define(IISDNdevHDLC_10, @IISDNdevHDLC_10@). -define(IISDNdevHDLC_11, @IISDNdevHDLC_11@). -define(IISDNdevHDLC_12, @IISDNdevHDLC_12@). -define(IISDNdevHDLC_13, @IISDNdevHDLC_13@). -define(IISDNdevHDLC_14, @IISDNdevHDLC_14@). -define(IISDNdevHDLC_15, @IISDNdevHDLC_15@). -define(IISDNdevHDLC_16, @IISDNdevHDLC_16@). -define(IISDNdevMODEM_0, @IISDNdevMODEM_0@). -define(IISDNdevMODEM_1, @IISDNdevMODEM_1@). -define(IISDNdevSYNC_0, @IISDNdevSYNC_0@). -define(IISDNdevFDL, @IISDNdevFDL@). -define(IISDNdevHDLC_LINE, @IISDNdevHDLC_LINE@). -define(IISDNdevSIGNALING, @IISDNdevSIGNALING@). -define(IISDNdevETHERNET, @IISDNdevETHERNET@). %% structure sizes -define(SIZEOF_IISDN_LINE_DATA, @SIZEOF_IISDN_LINE_DATA@). -define(SIZEOF_IISDN_L2_LAP_PARAMS, @SIZEOF_IISDN_L2_LAP_PARAMS@). -define(SIZEOF_IISDN_L2_UDPIP_PARAMS, @SIZEOF_IISDN_L2_UDPIP_PARAMS@). -define(SIZEOF_IISDN_L2_TCPIP_PARAMS, @SIZEOF_IISDN_L2_TCPIP_PARAMS@). -define(SIZEOF_IISDN_L2_DPNSS_PARAMS, @SIZEOF_IISDN_L2_DPNSS_PARAMS@). -define(SIZEOF_IISDN_L2_SS7_PARAMS, @SIZEOF_IISDN_L2_SS7_PARAMS@). -define(SIZEOF_IISDN_L2_V110_PARAMS, @SIZEOF_IISDN_L2_V110_PARAMS@). -define(SIZEOF_IISDN_L2_LAP_CONSTS, @SIZEOF_IISDN_L2_LAP_CONSTS@). -define(SIZEOF_IISDN_L2_IP_CONSTS, @SIZEOF_IISDN_L2_IP_CONSTS@). -define(SIZEOF_IISDN_L2_DPNSS_CONSTS, @SIZEOF_IISDN_L2_DPNSS_CONSTS@). -define(SIZEOF_IISDN_L2_SS7_CONSTS, @SIZEOF_IISDN_L2_SS7_CONSTS@). -define(SIZEOF_IISDN_Q931_CNFG, @SIZEOF_IISDN_Q931_CNFG@). -define(SIZEOF_IISDN_BONDING_DATA, @SIZEOF_IISDN_BONDING_DATA@). -define(SIZEOF_IISDN_X25_CONFIG, @SIZEOF_IISDN_X25_CONFIG@). -define(SIZEOF_IISDN_PM_CONFIG, @SIZEOF_IISDN_PM_CONFIG@). -define(SIZEOF_IISDN_RELAY_CONFIG, @SIZEOF_IISDN_RELAY_CONFIG@). -define(SIZEOF_IISDN_DPNSSCC_CONFIG, @SIZEOF_IISDN_DPNSSCC_CONFIG@). -define(SIZEOF_IISDN_DASSCC_CONFIG, @SIZEOF_IISDN_DASSCC_CONFIG@). -define(SIZEOF_IISDN_Q933A_CONFIG, @SIZEOF_IISDN_Q933A_CONFIG@). -define(SIZEOF_IISDN_Q933A_PVC_STATUS, @SIZEOF_IISDN_Q933A_PVC_STATUS@). -define(SIZEOF_IISDN_ALARM_STATUS, @SIZEOF_IISDN_ALARM_STATUS@). -define(SIZEOF_IISDN_PP, @SIZEOF_IISDN_PP@). %% %% general structure of a host to board message %% -record(l4_to_l3, {lapdid=0, msgtype=0, l4_ref=0, call_ref=0, lli=0, data = <<>>}). %% %% general structure of a board to host message %% -record(l3_to_l4, {lapdid=0, msgtype=0, l4_ref=0, call_ref=0, bchanel=0, interface=0, bchannel_mask=0, lli=0, data_channel=0, data = <<>>}). %% %% error in response to L4L3mXXXXX %% -define(L3L4mERROR, 16#20). -define(L3L4mFATAL_ERROR, 16#7f). -define(L3L4errNO_ERROR, 0). -define(L3L4errLAPDID_OUT_OF_RANGE, 1). -define(L3L4errLAPDID_NOT_ESTABLISHED, 2). -define(L3L4errINVALID_CALLED_NUMBER, 3). -define(L3L4errNO_CRV_AVAILABLE, 4). -define(L3L4errNO_CRSTRUCT_AVAILABLE, 5). -define(L3L4errCALL_REF_ERROR, 6). -define(L3L4errINVALID_B_CHANNEL, 7). -define(L3L4errB_CHANNEL_RESTARTING, 8). -define(L3L4errB_CHANNEL_OOS, 9). -define(L3L4errINVALID_CALL_TYPE, 10). -define(L3L4errD_CHAN_NOT_DISABLED, 12). -define(L3L4errPROTOCOL_NOT_DISABLED, 12). -define(L3L4errINVALID_HDLC_MAPPING, 13). -define(L3L4errINVALID_DATA_QUEUE, 14). -define(L3L4errINVALID_COMMAND_ARGS, 15). -define(L3L4errINVALID_MSG_FOR_STATE, 16). -define(L3L4errDATA_PACKET_LOST, 17). -define(L3L4errPM_NOT_ESF, 18). -define(L3L4errINVALID_INTERFACE, 19). -define(L3L4errB_CHANNEL_INUSE, 20). -define(L3L4errINVALID_LLI, 21). -define(L3L4errVC_TABLE_FULL, 22). -define(L3L4errLLI_NOT_FOUND, 23). -define(L3L4errBLOCKED, 24). -define(L3L4errNO_HARDWARE, 25). -define(L3L4errINVALID_SPID_LEN, 26). -define(L3L4errNON_NFAS, 27). -define(L3L4errINVALID_STATE, 28). -define(L3L4errSERVICE_NOT_OFFERED, 29). -define(L3L4errDCHAN_TEMP_UNAVAIL, 30). -define(L3L4errTOO_MANY_Q931_STACKS, 31). -define(L3L4errSERVICE_NOT_CONFIG, 32). -define(L3L4errDATA_INTERFACE_REQUIRED, 33). -define(L3L4errDATA_INTERFACE_INVALID, 34). -define(L3L4errSYMM_MODE_NOT_SUPPORTED, 35). -define(L3L4errINVALID_BUFFSZ, 36). -define(L3L4errBOND_CHAN_NOT_CNFG, 37). -define(L3L4errBOND_CHAN_BIT_CONFLICT, 38). -define(L3L4errBOND_WRONG_SPYDER_CHIP, 39). -define(L3L4errBOND_TOO_MANY_CHANNELS, 40). -define(L3L4errBOND_DUP_ADDON_CHAN, 41). -define(L3L4errDCHAN_ODD_POINTER_ERROR, 42). -define(L3L4errDCHAN_TOO_FEW_BUFFERS, 43). -define(L3L4errDCHAN_TOO_MANY_BUFFERS, 44). -define(L3L4errDCHAN_GIVE_TAKE_NONZERO, 45). -define(L3L4errDCHAN_ZERO_RXBUF_LEN, 46). -define(L3L4errSYMM_MODE_REQUIRED, 47). -define(L3L4errDLCI_MANDITORY, 48). -define(L3L4errCHAN_KBIT_RATE_BAD, 49). -define(L3L4errINVALID_MEM_SIZE, 50). -define(L3L4errNOT_ENOUGH_MEMORY, 51). -define(L3L4errTX_BUFFER_MISALIGNED, 52). -define(L3L4errRX_BUFFER_MISALIGNED, 53). -define(L3L4errTOO_MANY_DLCIS, 54). -define(L3L4errBOND_BAD_STATE, 55). -define(L3L4errSPID_REJECTED, 56). -define(L3L4errTEI_IDENT_REMOVE_REQ, 57). -define(L3L4err2ND_SPID_REJECTED, 58). -define(L3L4errINVALID_SMI_MSGID, 59). -define(L3L4errINVALID_CLOCK_MODE, 60). -define(L3L4errNO_OVERFLOW_QUEUE, 61). -define(L3L4errTOO_MANY_CAS_DEST, 62). -define(L3L4errSEGMENT_TOO_LARGE, 63). -define(L3L4errSEGMENT_MESSAGE_EXPECTED, 64). -define(L3L4errSEGMENT_MESSAGE_INVALID, 65). -define(L3L4errSEGMENT_TIMER_EXPIRED, 66). -define(L3L4errINVALID_DOWNLOAD_MSG, 67). -define(L3L4errPROTOCOL_DISABLED, 68). -define(L3L4errINVALID_VARIANT, 69). -define(L3L4errTOO_MANY_LINKS, 70). -define(L3L4errTOO_MANY_HEADERS, 71). -define(L3L4errFATAL_ERROR, 72). -define(L3L4errHOT_SWAP_EXTRACTION, 73). -define(L3L4errDCHAN_OUT_OF_RANGE, 74). -define(L3L4errETHERNET_ALREADY_ENABLED, 75). -define(L3L4errTSI_VERIFICATION_FAILED, 76). -define(L3L4errLAST_ERROR, 76). -define(L3L4errSTATUS_IGNORED, 100). -define(L3L4errBAD_CALL_REF, 101). -define(L3L4errGLARE, 102). -record(error_code, {error_code, offending_message}). -define(L4L3mREQ_BOARD_ID, 16#C1). -define(L3L4mBOARD_ID, 16#3B). -record(board_id, {iisdn_ver, banner, date, model, rev, board_type, num_lines, num_hdlc_chan, num_modem_chan, line_type, kernel_ram_size, mezz_ram_size, num_bfio_devices, bfio_device}). -define(L4L3mSET_HARDWARE, 16#A7). -define(L4L3mREQ_HW_STATUS, 16#A8). -define(L3L4mHARDWARE_STATUS, 16#24). -record(hardware_data, {clocking=0, clocking2=0, enable_clocking2=0, netref_clocking=0, netref_rate=0, ctbus_mode=0, force_framer_init=0, tdm_rate=0, enable_8370_rliu_monitor=0, dbcount=0, enable_t810x_snap_mode=0, clk_status=0, line_data = lists:duplicate(?IISDN_MAX_LINES, #line_data{}), csu = lists:duplicate(?IISDN_MAX_LINES, 0)}). -define(IISDNfrmESF, 0). -define(IISDNfrmRESRVD, 1). -define(IISDNfrmSF_SLC96, 2). -define(IISDNfrmSF, 3). -define(IISDNfrmFEBE, 0). -define(IISDNfrmCRC4, 0). -define(IISDNfrmBASIC, 2). -define(IISDNfrmFEBE_CAS, 3). -define(IISDNfrmCRC4_CAS, 3). -define(IISDNfrmBASIC_CAS, 5). -define(IISDNfrmDISABLED, 6). -define(IISDNfrmTS014_FEBE, 7). -define(IISDNcodB8ZS, 0). -define(IISDNcodB7ZS, 1). -define(IISDNcodHDB3, 0). -define(IISDNcodTRANSPARENT, 2). -record(line_data, {framing=0, line_code=0, pm_mode=0, line_length=0, term=0, line_type=0, integrate_alarms=0, filter_unsolicited=0, filter_yellow=0, bri_l1mode=0, briL1_cmd=0, bri_loop=0, bril1_t3=0, bril1_t4=0}). -define(L4L3mSET_TSI, 16#A9). -define(L4L3mREQ_TSI_STATUS, 16#D4). -define(L3L4mTSI_STATUS, 16#4A). -define(IISDN_MAX_SET_TSI, 120). -define(IISDNtsiGRANULARITY_64K, 16#00). -define(IISDNtsiGRANULARITY_32K, 16#01). -define(IISDNtsiGRANULARITY_16K, 16#02). -define(IISDNtsiGRANULARITY_8K, 16#03). -define(IISDNtsiDSi0, 16#0000). -define(IISDNtsiDSi1, 16#0100). -define(IISDNtsiDSi2, 16#0200). -define(IISDNtsiDSi3, 16#0300). -define(IISDNtsiDSi4, 16#0400). -define(IISDNtsiDSi5, 16#0500). -define(IISDNtsiDSi6, 16#0600). -define(IISDNtsiDSi7, 16#0700). -define(IISDNtsiDSo0, 16#0800). -define(IISDNtsiDSo1, 16#0900). -define(IISDNtsiDSo2, 16#0a00). -define(IISDNtsiDSo3, 16#0b00). -define(IISDNtsiDSo4, 16#0c00). -define(IISDNtsiDSo5, 16#0d00). -define(IISDNtsiDSo6, 16#0e00). -define(IISDNtsiDSo7, 16#0f00). -define(IISDNtsiLINE_A, 16#1000). -define(IISDNtsiLINE_B, 16#1100). -define(IISDNtsiLINE_C, 16#1200). -define(IISDNtsiLINE_D, 16#1300). -define(IISDNtsiLINE_E, 16#1400). -define(IISDNtsiLINE_F, 16#1500). -define(IISDNtsiLINE_G, 16#1600). -define(IISDNtsiLINE_H, 16#1700). -define(IISDNtsiHDLC_0, 16#2000). -define(IISDNtsiHDLC_1, 16#2100). -define(IISDNtsiHDLC_2, 16#2200). -define(IISDNtsiHDLC_3, 16#2300). -define(IISDNtsiHDLC_4, 16#2400). -define(IISDNtsiHDLC_5, 16#2500). -define(IISDNtsiHDLC_6, 16#2600). -define(IISDNtsiHDLC_7, 16#2700). -define(IISDNtsiHDLC_8, 16#2800). -define(IISDNtsiHDLC_9, 16#2900). -define(IISDNtsiHDLC_10, 16#2a00). -define(IISDNtsiHDLC_11, 16#2b00). -define(IISDNtsiHDLC_12, 16#2c00). -define(IISDNtsiHDLC_13, 16#2d00). -define(IISDNtsiHDLC_14, 16#2e00). -define(IISDNtsiHDLC_15, 16#2f00). -define(IISDNtsiHDLC_16, 16#3000). -define(IISDNtsiMODEM_0, 16#6000). -define(IISDNtsiMODEM_1, 16#6100). -define(IISDNtsiDISABLE, 16#4000). -define(IISDNtsiPATTERN, 16#5000). -define(IISDNtsiDSP_0, 16#7000). -define(IISDNtsiDSP_1, 16#7100). -define(IISDNtsiDSP_2, 16#7200). -define(IISDNtsiDSP_3, 16#7300). -define(IISDNtsiDSP_4, 16#7400). -define(IISDNtsiDSP_5, 16#7500). -define(IISDNtsiDSP_6, 16#7600). -define(IISDNtsiDSP_7, 16#7700). -define(IISDNtsiDSi(X), (X bsl 8)). -define(IISDNtsiDSo(X), ((X + 8) bsl 8)). -define(IISDNtsiLINE(X), (16#1000 bor (X bsl 8)). -define(IISDNtsiHDLC(X), (16#2000 bor (X bsl 8)). -define(IISDNtsiMODEM(X), (16#6000 bor (X bsl 8)). -define(IISDNtsiDSP(X), (16#7000 bor (X bsl 8)). -define(IISDNtsiCTd(X), (16#8000 bor (X bsl 10)). -record(tsi_data, {tsi_ack_enable = 0, num_mappings = 0, granularity = 0, last = 0, tsi_map = []}). -record(tsi_map, {destination = 0, source = 0}). -define(L4L3mENABLE_PROTOCOL, 16#B6). -define(L4L3mDISABLE_PROTOCOL, 16#A1). -record(ena_proto_data, {command=0, command_parameter=0, level1 = #level1{}, level2 = #level2{}, level3 = #level3{}}). -define(IISDNl1modHDLC, 0). -define(IISDNl1modRAW, 1). -define(IISDNl1modV110, 2). -define(IISDNl1modRAW_SPECIAL1, 4). -define(IISDNl1modISLP, 5). -define(IISDNl1modMODEM, 6). -define(IISDNl1modSIGNALING, 7). -define(IISDNl1modETHERNET, 8). -define(IISDNl1modBULK_RAW, 9). -record(level1, {l1_mode=0, invert_hdlc=0, num_txbuf=0, num_rxbuf=0, buffsz=0, chain=0, device=0, bit_reverse=0, vme_lock=0, hdlc_channels=0, chan_kbit_rate=0, crc_bytes=0, crc_ignore_errs=0, rate_adapt = #rate_adapt{}, raw_fillchar=#raw_fillchar{}, hdlc_flag_fill=#hdlc_flag_fill{}, modem=#modem{}, v110=#v110{}}). -record(rate_adapt, {enable=0, rate_adapt_value=0}). -record(raw_fillchar, {enable=0, fill_value=0}). -define(IISDNflgmCONST, 0). -define(IISDNflgmCONST_FLAG_ADJUST, 1). -define(IISDNflgmRTA, 2). -define(IISDNflgmRTA_FLAG_ADJUST, 3). -record(hdlc_flag_fill, {enable=0, mode=0, value=0}). -record(modem, {originate=0, faxClass=0, encoding=0, amf=0, amf_params=[0,0,0,0], minBPS=0, maxBPS=0}). -record(v110, {bit_rate=0, auto_detect=0}). -define(IISDNl2modLAP_D, 0). -define(IISDNl2modDISABLED, 1). -define(IISDNl2modLAP_B, 2). -define(IISDNl2modBONDING, 3). -define(IISDNl2modLAP_F, 4). -define(IISDNl2modDPNSS, 5). -define(IISDNl2modLAP_D_EFA, 6). -define(IISDNl2modPM, 7). -define(IISDNl2modSS7, 8). -define(IISDNl2modUDP_IP, 9). -define(IISDNl2modDASS, 10). -define(IISDNl2modV110, 11). -define(IISDNl2modV120, 12). -define(IISDNl2modLAP_F_CORE, 13). -define(IISDNl2modSS7_MON, 14). -define(IISDNl2modTCP_IP, 15). -define(IISDNdirUSER_SIDE, 0). -define(IISDNdirNETWORK_SIDE, 1). -define(IISDNdirSYMMETRIC, 2). -record(level2, {par=#l2_lap_params{}, data_interface=#data_interface{}, consts=#l2_lap_consts{}}). -record(l2_lap_params, {mode=?IISDNl2modLAP_D, dce_dte=0, tei_mode=0, no_sabme=0, l2_detail=0, timestamp=0, ui_mode=0, priority=0, no_reestab=0, mode_1tr6=0, mode_tei_1=0, no_piggyback=0}). -record(l2_udpip_params, {mode=?IISDNl2modUDP_IP, dstport=0, dstipaddr=0}). -record(l2_tcpip_params, {mode=?IISDNl2modTCP_IP, dstport=0, dstipaddr=0}). -record(l2_dpnss_params, {mode=?IISDNl2modDPNSS, pbx_b=0, sabmr_as_ack=0, tie_line_mode=0}). -record(l2_ss7_params, {mode=?IISDNl2modSS7, variant=0}). -record(l2_v110_params, {mode=?IISDNl2modV110, ebits=0, flow_control=0, nine_byte_rx_frames=0, num_tx_idle_frames=0, max_rx_frame_size=0, stale_rx_data_timer=0, filter_status_messages=0}). -record(data_interface, {enable=0, data_channel=0, fillandspill=0, allow_buffer_preload=0}). -record(l2_lap_consts, {t200=0, t201=0, t202=0, t203=0, n200=0, n201=0, n202=0, k=0}). -record(l2_ip_consts, {no_dhcp=0, ipaddr=0, gwaddr=0, subnet_mask=0}). -record(l2_dpnss_consts, {nl=0, nt1=0, nt2=0}). -record(l2_ss7_consts, {t1=0, t2=0, t3=0, t4n=0, t4e=0, t5=0, t6=0, t7=0}). -define(IISDNl3modDISABLED, 0). -define(IISDNl3modQ931, 1). -define(IISDNl3modX25_PKT, 2). -define(IISDNl3modQ933, 3). -define(IISDNl3modBONDING, 4). -define(IISDNl3modPM, 5). -define(IISDNl3modRELAY, 6). -define(IISDNl3modDPNSS, 7). -define(IISDNl3modDASS, 8). -define(IISDNl3modQ933_ANNEX_A, 9). -define(IISDNstATT_4ESS, 16#00). -define(IISDNstATT_5ESS, 16#01). -define(IISDNstNTI_DMS100, 16#02). -define(IISDNstNTI_DMS250, 16#03). -define(IISDNstMD110_T1, 16#04). -define(IISDNstMD110_E1, 16#05). -define(IISDNstSIEMENS, 16#06). -define(IISDNstNTT, 16#07). -define(IISDNstUNKNOWN, 16#08). -define(IISDNstMAX_SWITCH_TYP, 16#08). -define(IISDNvarATT_CUSTOM, 16#00). -define(IISDNvarNTI_CUSTOM, 16#01). -define(IISDNvarNATL_ISDN_1, 16#02). -define(IISDNvarNATL_ISDN_2, 16#03). -define(IISDNvarJATE, 16#04). -define(IISDNvarCTR3, 16#05). -define(IISDNvarNET3, 16#05). -define(IISDNvarCTR4, 16#06). -define(IISDNvarNET5, 16#06). -define(IISDNvar1TR6_BRI, 16#07). -define(IISDNvar1TR6_IISDN, 16#08). -define(IISDNvarVN3, 16#09). -define(IISDNvarITU, 16#0A). -define(IISDNvarCCITT, 16#0A). -define(IISDNvarQ933, 16#0B). -define(IISDNvarQ933_T123, 16#0C). -define(IISDNvarTS014, 16#0D). -define(IISDNvarTS013, 16#0E). -define(IISDNvarARINC_746, 16#0F). -define(IISDNvarGR_303, 16#10). -define(IISDNvarGR_303_TMC, 16#11). -record(level3, {l3_mode=0, cnfg=#q931{}}). -record(q931, {switch_type=0, variant=0, call_filtering=0, q931_timers=#q931_timers{}, b_channel_service_state=lists:duplicate(?IISDN_NUM_DS1_INTERFACES, 0), nfas=0, e1_30_bchan=0, basic_rate=0, net_side_emul=0, b_chan_negot=0, proc_on_exclusv=0, chanid_slot_map=0, sprs_chanid_callproc=0, no_chanid_callproc=0, append_raw_qmsg=0, ccitt_mode=0, raw_qmsg=0, no_ie_errcheck=0, user_ie_encode=0, overlap_rcv=0, send_l3l4_callproc=0, sending_cmplt=0, require_send_complete=0, report_incoming_callproc=0, no_tx_conn_ack=0, no_rx_conn_ack=0, sprs_chanid_setupack=0, no_chanid_setupack=0, no_canned_spid_rej=0, call_reject_notify=0, advice_of_charge=0, message_segmentation=0, no_bc_user_info=0, incoming_call_slot_map=0, release_complete_control=0, primary_lapdid=0, backup_lapdid=0, primary_ifnum=0, backup_ifnum=0, backup_control=0, spid_len=0, spid_1_len=0, dn_len=0, dn_1_len=0, spid=lists:duplicate(?IISDN_MAX_SPID_LEN, 0), spid_1=lists:duplicate(?IISDN_MAX_SPID_LEN, 0), dn=lists:duplicate(?IISDN_MAX_DN_LEN, 0), dn_1=lists:duplicate(?IISDN_MAX_DN_LEN, 0), chan_id_high_bit=0, att_cust_bri_ekts=0, subscribe_connack=0, suppress_auto_spid=0, accept_all_bri_calls=0}). -record(q931_timers, {t302=0, t305=0, t308=0, t313=0, t314=0, t316=0, t318=0, t319=0, t3m1=0, t321=0}). -record(bonding_data, {mode=0, destination=0, num_tx_buf=0, num_rx_buf=0, data_channel=0, txinit=0, txadd01=0, txfa=0, txdisc=0, txdeq=0, tcid=0, tanull=0, channels=0, directory=lists:duplicate(?IISDN_MAX_BOND_CHAN, 0)}). -record(x25, {cfg_msk=0, t10=0, t11=0, t12=0, t13=0, t28=0, p=0, w=0, max_clr_retry=0, max_svcs=0, max_pvcs=0}). -define(IISDNpmmNEAREND, 0). -define(IISDNpmmANSI, 1). -record(pm, {mode=0, carrier=0, fdl_alert=0, equipmentid=lists:duplicate(10, 0), locationid=lists:duplicate(11, 0), frameid=lists:duplicate(10, 0), unitid=lists:duplicate(6, 0), facilityid=lists:duplicate(38, 0)}). -record(relay, {default_dest=0, default_dest_id=0, default_root_idx=0}). -record(dpnss, {pbx_y=0, no_virtual_channels=0, dest_addr_len=0, b_channel_service_state=0, v_channel_service_state=0, t_i_msg=0, t_guard=0}). -record(dass, {b_channel_service_state=0, t_digit_racking=0, n_clear_retries=0}). -record(q933a, {network_side=0, n391=0, n392=0, n393=0, t391=0, t392=0}). -define(L4L3mRELAY_ADD_RULE, 16#CC). -define(L4L3mRELAY_DEL_RULE, 16#CD). -define(L4L3mRELAY_CLEAR_RULES, 16#CE). -define(L4L3mREQ_RELAY_RULES, 16#CF). -define(L4L3mREQ_RELAY_STATS, 16#D0). -define(L3L4mRELAY_RULES, 16#45). -define(L3L4mRELAY_STATS, 16#46). -record(match, {idx=0, msk=0, val=0}). -record(relay_rule, {match=lists:duplicate(?IISDN_RELAY_MAX_MATCHES, #match{}), dest=0, dest_id=0, delBytes=0, insBytes=0, insHeader=lists:duplicate(?IISDN_RELAY_MAX_INSERT, 0), insTimeStamp=0, insTimeStampOffset=0}). -record(relay_stats, {recv_cnt=0, recv_bytes=0, drop_cnt=0, xmit_cnt=0, xmit_bytes=0, xmit_deferred_cnt=0, xmit_overflow_cnt=0, current_deferred_queue_depth=0}). -define(L4L3mREQ_PROTOCOL_STATUS, 16#A5). -define(L3L4mPROTOCOL_STATUS, 16#21). -define(IISDNdsNOT_ESTABLISHED, 0). -define(IISDNdsESTABLISHING, 1). -define(IISDNdsESTABLISHED, 2). -define(IISDNlpdsTEI_UNASSIGNED, 0). -define(IISDNlpdsTEI_ASSIGNED, 4). -define(IISDNlpdsAWAITING_ESTABLISHMENT, 5). -define(IISDNlpdsAWAITING_RELEASE, 6). -define(IISDNlpdsMULTIFRAME_ESTABLISHED, 7). -define(IISDNlpdsTIMER_RECOVERY, 8). -define(IISDNl2errNO_ERROR, 0). -define(IISDNl2errA, 1). -define(IISDNl2errB, 2). -define(IISDNl2errC, 3). -define(IISDNl2errD, 4). -define(IISDNl2errE, 5). -define(IISDNl2errF, 6). -define(IISDNl2errG, 7). -define(IISDNl2errH, 8). -define(IISDNl2errI, 9). -define(IISDNl2errJ, 10). -define(IISDNl2errK, 11). -define(IISDNl2errL, 12). -define(IISDNl2errM, 13). -define(IISDNl2errN, 14). -define(IISDNl2errO, 15). -define(IISDNdsmskDM_RCVD, 16#0001). -define(IISDNdsmskSABME_RCVD, 16#0002). -define(IISDNdsmskSABME_SENT, 16#0004). -define(IISDNdsmskFRAME_MOD_8, 16#0008). -define(IISDNdsmskBAD_CRC, 16#0010). -define(IISDNdsmskBAD_LEN, 16#0020). -define(IISDNdsmskUNKN_CTRL, 16#0040). -define(IISDNdsmskUNKN_DLCI, 16#0080). -define(IISDNdsmskUNEXPECTED, 16#0100). -define(IISDNdsmskDISC_RCVD, 16#0200). -define(IISDNdsmskT200, 16#0400). -define(IISDNdsmskXID_RCVD, 16#0800). -define(IISDNdsmskUA_RCVD, 16#1000). -define(IISDNdsmskONR_ERROR, 16#2000). -record(protocol_stat, {status=0, l2_state=0, l2_error=0, l2_errpt=0, b_channels=0, b_chan_req=0, txcount=0, rxcount=0, l2_detail=0, l2_detail_data=0, all_calls_dropped=0, num_q933a_pvcs=0, n_b_channels=lists:duplicate(?IISDN_NUM_DS1_INTERFACES, 0), n_b_chan_req=lists:duplicate(?IISDN_NUM_DS1_INTERFACES, 0), nfas_primary_dchan_status=0, nfas_backup_dchan_status=0, ethernet_speed=0, ethernet_mode=0, connectBPS=0, connectTyp=0, ip=#l2_ip_consts{}, q933a_pvcs=lists:duplicate(?IISDN_MAX_VC_PER_CHAN - 1, #q933a_pvc_status{}), amf_status=[0,0,0,0]}). -record(q933a_pvc_status, {lli=0, status=0}). -define(L4L3mREQ_L2_STATS, 16#AB). -define(L3L4mL2_STATS, 16#25). -define(IISDNstatL2, 0). -define(IISDNstatMTP2, 1). -record(l2_stats, {iframe_tx=0, rr_cmd_tx=0, rnr_cmd_tx=0, rej_cmd_tx=0, sabm_tx=0, sabme_tx=0, disc_tx=0, rr_rsp_tx=0, rnr_rsp_tx=0, rej_rsp_tx=0, dm_tx=0, ua_tx=0, frmr_tx=0, iframe_rx=0, rr_cmd_rx=0, rnr_cmd_rx=0, rej_cmd_rx=0, sabm_rx=0, sabme_rx=0, disc_rx=0, rr_rsp_rx=0, rnr_rsp_rx=0, rej_rsp_rx=0, dm_rx=0, ua_rx=0, frmr_rx=0, crc_errors=0, rcv_errors=0, retrans_cnt=0, poll_errors=0, ui_tx=0, ui_rx=0}). -record(mtp2_stats, {msu_rx=0, msu_tx=0, msu_rx_err=0, msu_re_tx=0, neg_ack=0, octet_rx=0, octet_tx=0}). -record(l2_mtp2_stats, {mode=0, stats=0}). -define(L4L3mREQ_LINE_STATUS, 16#A6). -define(L3L4mLINE_STATUS, 16#23). -define(IISDNl1state_F1, 16#f1). % Green -define(IISDNl1state_F2, 16#f2). % RAI (Remote Alarm Indicator) -define(IISDNl1state_F3, 16#f3). % LOS (Loss of Signal) -define(IISDNl1state_F4, 16#f4). % AIS (Alarm Indicator Signal) -define(IISDNl1state_F5, 16#f5). % RAI & CRC-4 Alarm -define(IISDNl1state_OOF, 16#0f). % OOF (Out of Frame) -define(IISDNl1state_FAE, 16#ae). % Frame Alignment Error -record(line_status, {alarm_status = lists:duplicate(?IISDN_MAX_LINES, #alarm_status{}), l1_state = lists:duplicate(?IISDN_MAX_LINES, 0), line_type = lists:duplicate(?IISDN_MAX_LINES, 0), mph_msg = lists:duplicate(?IISDN_MAX_LINES, 0), error_point = 0}). -record(alarm_status, {rcv_yellow=0, rcv_blue=0, rcv_red=0, snd_yellow=0}). -define(L4L3mPM_REQUEST, 16#AA). -define(L3L4mPM_RESPONSE, 16#28). -define(L3L4mPM_ALERT, 16#29). -define(IISDNpmcGET_THRSHLDS_15MIN, 0). -define(IISDNpmcSET_THRSHLDS_15MIN, 1). -define(IISDNpmcGET_THRSHLDS_24HR, 2). -define(IISDNpmcSET_THRSHLDS_24HR, 3). -define(IISDNpmcRESET_PM_COUNTERS, 4). -define(IISDNpmcGET_15MIN_DATA, 5). -define(IISDNpmcGET_24HR_DATA, 6). -define(IISDNpmcPLB_ACTIVATE, 7). -define(IISDNpmcPLB_DEACTIVATE, 8). -define(IISDNpmcLLB_ACTIVATE, 9). -define(IISDNpmcLLB_DEACTIVATE, 10). -define(IISDNpmcSEND_FDL_REQUEST, 11). -define(IISDN_PP_NUM_INTERVALS_PER_PACKET, 6). -define(IISDNpmsSUCCESS, 0). -define(IISDNpmsFAIL_GENERAL, 1). -define(IISDNpmsFAIL_UNKNOWN_REQUEST, 2). -define(IISDNpmaTHRESHOLD_XING, 0). -define(IISDNpmaFDL_RX_MOP, 1). -define(IISDNpmaFDL_RX_BOP, 2). -define(IISDNpmeNEAR_END, 0). -define(IISDNpmeFAR_END, 1). -define(IISDNpmi15MIN, 0). -define(IISDNpmi24HR, 1). -define(IISDNpmtcmBPV, 16#0001). -define(IISDNpmtcmEXZ, 16#0002). -define(IISDNpmtcmLCV, 16#0004). -define(IISDNpmtcmPCV, 16#0008). -define(IISDNpmtcmCS, 16#0010). -define(IISDNpmtcmOOFS, 16#0020). -define(IISDNpmtcmAISS, 16#0040). -define(IISDNpmtcmLES, 16#0080). -define(IISDNpmtcmCSS, 16#0100). -define(IISDNpmtcmES, 16#0200). -define(IISDNpmtcmBES, 16#0400). -define(IISDNpmtcmSES, 16#0800). -define(IISDNpmtcmSEFS, 16#1000). -define(IISDNpmtcmDM, 16#2000). -define(IISDNpmtcmUAS, 16#4000). -record(pp, {bpv=0, exz=0, lcv=0, pcv=0, cs=0, oofs=0, aiss=0, les=0, css=0, es=0, bes=0, ses=0, sefs=0, dm=0, uas=0}). -record(pm_req_data, {line=0, endx=0, pm_cmd=0, fdl_request=0, interval_id=0, num_intervals=0, threshold=#pp{}}). -record(pm_rsp_data, {line=0, endx=0, pm_cmd=0, requested_interval_id=0, pm_status=0, current_interval_id=0, seconds_in_current_interval=0, num_valid_intervals=0, num_intervals=0, pp=#pp{}}). -record(pm_threshold_xing_data, {line=0, endx=0, interval_size=0, interval_id=0, threshold_crossing_mask=0, interval=0, threshold=0}). -record(pm_fdl_msg_data, {line=0, msg_code=0, data}). % data=binary() -record(pm_alert_data, {alert_type=0, a=#pm_threshold_xing_data{}}).