/******************************************************************************//** * \file wanpipe_api_legacy.h * \brief WANPIPE(tm) Driver Legacy API * * Authors: Nenad Corbic * David Rokhvarg * Alex Feldman * * Copyright (c) 2007 - 08, Sangoma Technologies * 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 the Sangoma Technologies 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 Sangoma Technologies ``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 Sangoma Technologies 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 * =============================================================================== */ #ifndef __WANPIPE_API_LEGACY__ #define __WANPIPE_API_LEGACY__ #pragma pack(1) /****************************************************************//** * WANPIPE LEGACY API Structure *******************************************************************/ #define WAN_API_MAX_DATA 4096 typedef struct{ unsigned char pktType; unsigned short length; unsigned char result; union { struct { unsigned char arg1; unsigned short time_stamp; } chdlc; struct { unsigned char attr; unsigned short time_stamp; } fr; struct { unsigned char qdm; unsigned char cause; unsigned char diagn; unsigned short lcn; } x25; struct { unsigned char station; unsigned char PF_bit; unsigned short poll_interval; unsigned char general_mailbox_byte; }sdlc; struct { unsigned char exception; }xdlc; } wan_protocol; #define wan_apihdr_chdlc_error_flag wan_protocol.chdlc.arg1 #define wan_apihdr_chdlc_attr wan_protocol.chdlc.arg1 #define wan_apihdr_chdlc_time_stamp wan_protocol.chdlc.time_stamp #define wan_apihdr_fr_attr wan_protocol.fr.attr #define wan_apihdr_fr_time_stamp wan_protocol.fr.time_stamp #define wan_apihdr_x25_qdm wan_protocol.x25.qdm #define wan_apihdr_x25_cause wan_protocol.x25.cause #define wan_apihdr_x25_diagn wan_protocol.x25.diagn #define wan_apihdr_x25_lcn wan_protocol.x25.lcn #define wan_apihdr_sdlc_station wan_protocol.sdlc.station #define wan_apihdr_sdlc_pf wan_protocol.sdlc.PF_bit #define wan_apihdr_sdlc_poll_interval wan_protocol.sdlc.poll_interval #define wan_apihdr_sdlc_general_mb_byte wan_protocol.sdlc.general_mailbox_byte #define wan_apihdr_xdlc_exception wan_protocol.xdlc.exception } wan_api_hdr_t; typedef struct{ wan_api_hdr_t api_hdr; unsigned char data[WAN_API_MAX_DATA]; #define wan_api_pktType api_hdr.pktType #define wan_api_length api_hdr.length #define wan_api_result api_hdr.result #define wan_api_chdlc_error_flag api_hdr.wan_apihdr_chdlc_error_flag #define wan_api_chdlc_time_stamp api_hdr.wan_apihdr_chdlc_time_stamp #define wan_api_chdlc_attr api_hdr.wan_apihdr_chdlc_attr #define wan_api_chdlc_misc_Tx_bits api_hdr.wan_apihdr_chdlc_misc_Tx_bits #define wan_api_fr_attr api_hdr.wan_apihdr_fr_attr #define wan_api_fr_time_stamp api_hdr.wan_apihdr_fr_time_stamp #define wan_api_x25_qdm api_hdr.wan_apihdr_x25_qdm #define wan_api_x25_cause api_hdr.wan_apihdr_x25_cause #define wan_api_x25_diagn api_hdr.wan_apihdr_x25_diagn #define wan_api_x25_lcn api_hdr.wan_apihdr_x25_lcn #define wan_api_sdlc_station api_hdr.wan_apihdr_sdlc_station #define wan_api_sdlc_pf api_hdr.wan_apihdr_sdlc_pf #define wan_api_sdlc_poll_interval api_hdr.wan_apihdr_sdlc_poll_interval #define wan_api_sdlc_general_mb_byte api_hdr.wan_apihdr_sdlc_general_mb_byte #define wan_api_xdlc_exception api_hdr.wan_apihdr_xdlc_exception } wan_api_t; #define WAN_MAX_DATA_SIZE 5000 #define MAX_LGTH_UDP_MGNT_PKT WAN_MAX_DATA_SIZE #define WAN_MAILBOX_SIZE 16 #define WAN_MAX_POS_DATA_SIZE 1030 #define WAN_MAX_MBOX_DATA_SIZE 2032 #define WAN_MAX_CMD_DATA_SIZE 990 /*! \struct wan_cmd_api_ \brief Wanpipe UDP CMD Structure \typedef wan_cmd_api_t */ typedef struct wan_cmd_api_ { unsigned int cmd; unsigned short len; unsigned char bar; unsigned int offset; int ret; /* return value */ unsigned char data[WAN_MAX_CMD_DATA_SIZE]; } wan_cmd_api_t; /*! \struct wan_cmd \brief Wanpipe Legacy Command Structure This structure is used as part of the wan_udp_hdr_t strcutre. Its used to hold the command and return return_code \typedef wan_cmd_t */ typedef struct wan_cmd { union { struct { unsigned char opp_flag; /*!< Used by legacy S514 cards as cmd complete flag */ unsigned char command; /*!< Wanpipemon Command: enum WANPIPE_IOCTL_PIPEMON_CMDS */ unsigned short data_len; /*!< Length of the data/result buffer */ unsigned char return_code; /*!< Result 0=OK otherwise Error */ union { struct { unsigned char PF_bit; /* the HDLC P/F bit */ } hdlc; struct { unsigned short dlci; /* DLCI number */ unsigned char attr; /* FECN, BECN, DE and C/R bits */ unsigned short rxlost1; /* frames discarded at int. level */ unsigned int rxlost2; /* frames discarded at app. level */ } fr; struct { unsigned char pf; /* P/F bit */ unsigned short lcn; /* logical channel */ unsigned char qdm; /* Q/D/M bits */ unsigned char cause; /* cause field */ unsigned char diagn; /* diagnostics */ unsigned char pktType; /* packet type */ } x25; struct { unsigned char misc_Tx_Rx_bits; /* miscellaneous transmit and receive bits */ unsigned char Rx_error_bits; /* an indication of a block received with an error */ unsigned short Rx_time_stamp; /* a millisecond receive time stamp */ unsigned char port; /* comm port */ } bscstrm; struct { unsigned char misc_tx_rx_bits; unsigned short heading_length; unsigned short notify; unsigned char station; unsigned char poll_address; unsigned char select_address; unsigned char device_address; unsigned char notify_extended; } bsc; struct { unsigned char sdlc_address; unsigned char PF_bit; unsigned short poll_interval; unsigned char general_mailbox_byte; } sdlc; struct { unsigned char force; } fe; } wan_protocol; } wan_p_cmd; struct { unsigned char opp_flag; unsigned char pos_state; unsigned char async_state; } wan_pos_cmd; unsigned char mbox[WAN_MAILBOX_SIZE]; } wan_cmd_u; #define wan_cmd_opp_flag wan_cmd_u.wan_p_cmd.opp_flag #define wan_cmd_command wan_cmd_u.wan_p_cmd.command #define wan_cmd_data_len wan_cmd_u.wan_p_cmd.data_len #define wan_cmd_return_code wan_cmd_u.wan_p_cmd.return_code #define wan_cmd_hdlc_PF_bit wan_cmd_u.wan_p_cmd.wan_protocol.hdlc.PF_bit #define wan_cmd_fe_force wan_cmd_u.wan_p_cmd.wan_protocol.fe.force #define wan_cmd_fr_dlci wan_cmd_u.wan_p_cmd.wan_protocol.fr.dlci #define wan_cmd_fr_attr wan_cmd_u.wan_p_cmd.wan_protocol.fr.attr #define wan_cmd_fr_rxlost1 wan_cmd_u.wan_p_cmd.wan_protocol.fr.rxlost1 #define wan_cmd_fr_rxlost2 wan_cmd_u.wan_p_cmd.wan_protocol.fr.rxlost2 #define wan_cmd_x25_pf wan_cmd_u.wan_p_cmd.wan_protocol.x25.pf #define wan_cmd_x25_lcn wan_cmd_u.wan_p_cmd.wan_protocol.x25.lcn #define wan_cmd_x25_qdm wan_cmd_u.wan_p_cmd.wan_protocol.x25.qdm #define wan_cmd_x25_cause wan_cmd_u.wan_p_cmd.wan_protocol.x25.cause #define wan_cmd_x25_diagn wan_cmd_u.wan_p_cmd.wan_protocol.x25.diagn #define wan_cmd_x25_pktType wan_cmd_u.wan_p_cmd.wan_protocol.x25.pktType #define wan_cmd_bscstrm_misc_bits wan_cmd_u.wan_p_cmd.wan_protocol.bscstrm.misc_Tx_Rx_bits #define wan_cmd_bscstrm_Rx_err_bits wan_cmd_u.wan_p_cmd.wan_protocol.bscstrm.Rx_error_bits #define wan_cmd_bscstrm_Rx_time_stamp wan_cmd_u.wan_p_cmd.wan_protocol.bscstrm.Rx_time_stamp #define wan_cmd_bscstrm_port wan_cmd_u.wan_p_cmd.wan_protocol.bscstrm.port #define wan_cmd_bsc_misc_bits wan_cmd_u.wan_p_cmd.wan_protocol.bsc.misc_tx_rx_bits #define wan_cmd_bsc_heading_len wan_cmd_u.wan_p_cmd.wan_protocol.bsc.heading_length #define wan_cmd_bsc_notify wan_cmd_u.wan_p_cmd.wan_protocol.bsc.notify #define wan_cmd_bsc_station wan_cmd_u.wan_p_cmd.wan_protocol.bsc.station #define wan_cmd_bsc_poll_addr wan_cmd_u.wan_p_cmd.wan_protocol.bsc.poll_address #define wan_cmd_bsc_select_addr wan_cmd_u.wan_p_cmd.wan_protocol.bsc.select_address #define wan_cmd_bsc_device_addr wan_cmd_u.wan_p_cmd.wan_protocol.bsc.device_address #define wan_cmd_bsc_notify_ext wan_cmd_u.wan_p_cmd.wan_protocol.bsc.notify_extended #define wan_cmd_sdlc_address wan_cmd_u.wan_p_cmd.wan_protocol.sdlc.sdlc_address #define wan_cmd_sdlc_pf wan_cmd_u.wan_p_cmd.wan_protocol.sdlc.PF_bit #define wan_cmd_sdlc_poll_interval wan_cmd_u.wan_p_cmd.wan_protocol.sdlc.poll_interval #define wan_cmd_sdlc_general_mb_byte wan_cmd_u.wan_p_cmd.wan_protocol.sdlc.general_mailbox_byte #define wan_cmd_pos_opp_flag wan_cmd_u.wan_pos_cmd.opp_flag #define wan_cmd_pos_pos_state wan_cmd_u.wan_pos_cmd.pos_state #define wan_cmd_pos_async_state wan_cmd_u.wan_pos_cmd.async_state } wan_cmd_t; typedef struct { wan_cmd_t wan_cmd; union { struct { unsigned char command; unsigned short data_len; unsigned char return_code; unsigned char port_num; unsigned char attr; unsigned char reserved[10]; unsigned char data[WAN_MAX_POS_DATA_SIZE]; } pos_data; unsigned char data[WAN_MAX_MBOX_DATA_SIZE]; } wan_u_data; #define wan_opp_flag wan_cmd.wan_cmd_opp_flag #define wan_command wan_cmd.wan_cmd_command #define wan_data_len wan_cmd.wan_cmd_data_len #define wan_return_code wan_cmd.wan_cmd_return_code #define wan_hdlc_PF_bit wan_cmd.wan_cmd_hdlc_PF_bit #define wan_fr_dlci wan_cmd.wan_cmd_fr_dlci #define wan_fr_attr wan_cmd.wan_cmd_fr_attr #define wan_fr_rxlost1 wan_cmd.wan_cmd_fr_rxlost1 #define wan_fr_rxlost2 wan_cmd.wan_cmd_fr_rxlost2 #define wan_x25_pf wan_cmd.wan_cmd_x25_pf #define wan_x25_lcn wan_cmd.wan_cmd_x25_lcn #define wan_x25_qdm wan_cmd.wan_cmd_x25_qdm #define wan_x25_cause wan_cmd.wan_cmd_x25_cause #define wan_x25_diagn wan_cmd.wan_cmd_x25_diagn #define wan_x25_pktType wan_cmd.wan_cmd_x25_pktType #define wan_bscstrm_misc_bits wan_cmd.wan_cmd_bscstrm_misc_bits #define wan_bscstrm_Rx_err_bits wan_cmd.wan_cmd_bscstrm_Rx_error_bits #define wan_bscstrm_Rx_time_stamp wan_cmd.wan_cmd_bscstrm_Rx_time_stamp #define wan_bscstrm_port wan_cmd.wan_cmd_bscstrm_port #define wan_bsc_misc_bits wan_cmd.wan_cmd_bsc_misc_bits #define wan_bsc_heading_len wan_cmd.wan_cmd_bsc_heading_length #define wan_bsc_notify wan_cmd.wan_cmd_bsc_notify #define wan_bsc_station wan_cmd.wan_cmd_bsc_station #define wan_bsc_poll_addr wan_cmd.wan_cmd_bsc_poll_address #define wan_bsc_select_addr wan_cmd.wan_cmd_bsc_select_address #define wan_bsc_device_addr wan_cmd.wan_cmd_bsc_device_address #define wan_bsc_notify_ext wan_cmd.wan_cmd_bsc_notify_extended #define wan_sdlc_address wan_cmd.wan_cmd_sdlc_address #define wan_sdlc_pf wan_cmd.wan_cmd_sdlc_pf #define wan_sdlc_poll_interval wan_cmd.wan_cmd_sdlc_poll_interval #define wan_sdlc_general_mb_byte wan_cmd.wan_cmd_sdlc_general_mb_byte #define wan_data wan_u_data.data #define wan_pos_opp_flag wan_cmd.wan_cmd_pos_opp_flag #define wan_pos_pos_state wan_cmd.wan_cmd_pos_pos_state #define wan_pos_async_state wan_cmd.wan_cmd_pos_async_state #define wan_pos_command wan_u_data.pos_data.command #define wan_pos_data_len wan_u_data.pos_data.data_len #define wan_pos_return_code wan_u_data.pos_data.return_code #define wan_pos_port_num wan_u_data.pos_data.port_num #define wan_pos_attr wan_u_data.pos_data.attr #define wan_pos_data wan_u_data.pos_data.data } wan_mbox_t; #define WAN_MBOX_INIT(mbox) memset(mbox, 0, sizeof(wan_cmd_t)); #pragma pack() #endif /* __WANPIPE_API_LEGACY__ */