Logo Search packages:      
Sourcecode: linux version File versions  Download package

kst_ifc.h

/*
 *
  Copyright (c) Eicon Networks, 2000.
 *
  This source file is supplied for the use with
  Eicon Networks range of DIVA Server Adapters.
 *
  Eicon File Revision :    1.9
 *
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2, or (at your option)
  any later version.
 *
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  See the GNU General Public License for more details.
 *
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */
#ifndef __DIVA_EICON_TRACE_API__
#define __DIVA_EICON_TRACE_API__

#define DIVA_TRACE_LINE_TYPE_LEN 64
#define DIVA_TRACE_IE_LEN        64
#define DIVA_TRACE_FAX_PRMS_LEN  128

typedef struct _diva_trace_ie {
      byte length;
      byte data[DIVA_TRACE_IE_LEN];
} diva_trace_ie_t;

/*
      Structure used to represent "State\\BX\\Modem" directory
      to user.
      */
typedef struct _diva_trace_modem_state {
      dword ChannelNumber;

      dword Event;

      dword Norm;

      dword Options; /* Options received from Application */

      dword TxSpeed;
      dword RxSpeed;

      dword RoundtripMsec;

      dword SymbolRate;

      int         RxLeveldBm;
      int         EchoLeveldBm;

      dword SNRdb;
      dword MAE;

      dword LocalRetrains;
      dword RemoteRetrains;
      dword LocalResyncs;
      dword RemoteResyncs;

      dword DiscReason;

} diva_trace_modem_state_t;

/*
      Representation of "State\\BX\\FAX" directory
      */
typedef struct _diva_trace_fax_state {
      dword ChannelNumber;
      dword Event;
      dword Page_Counter;
      dword Features;
      char Station_ID[DIVA_TRACE_FAX_PRMS_LEN];
      char Subaddress[DIVA_TRACE_FAX_PRMS_LEN];
      char Password[DIVA_TRACE_FAX_PRMS_LEN];
      dword Speed;
      dword Resolution;
      dword Paper_Width;
      dword Paper_Length;
      dword Scanline_Time;
      dword Disc_Reason;
      dword dummy;
} diva_trace_fax_state_t;

/*
      Structure used to represent Interface State in the abstract
      and interface/D-channel protocol independent form.
      */
typedef struct _diva_trace_interface_state {
      char Layer1[DIVA_TRACE_LINE_TYPE_LEN];
      char Layer2[DIVA_TRACE_LINE_TYPE_LEN];
} diva_trace_interface_state_t;

typedef struct _diva_incoming_call_statistics {
      dword Calls;
      dword Connected;
      dword User_Busy;
      dword Call_Rejected;
      dword Wrong_Number;
      dword Incompatible_Dst;
      dword Out_of_Order;
      dword Ignored;
} diva_incoming_call_statistics_t;

typedef struct _diva_outgoing_call_statistics {
      dword Calls;
      dword Connected;
      dword User_Busy;
      dword No_Answer;
      dword Wrong_Number;
      dword Call_Rejected;
      dword Other_Failures;
} diva_outgoing_call_statistics_t;

typedef struct _diva_modem_call_statistics {
      dword Disc_Normal;
      dword Disc_Unspecified;
      dword Disc_Busy_Tone;
      dword Disc_Congestion;
      dword Disc_Carr_Wait;
      dword Disc_Trn_Timeout;
      dword Disc_Incompat;
      dword Disc_Frame_Rej;
      dword Disc_V42bis;
} diva_modem_call_statistics_t;

typedef struct _diva_fax_call_statistics {
      dword Disc_Normal;
      dword Disc_Not_Ident;
      dword Disc_No_Response;
      dword Disc_Retries;
      dword Disc_Unexp_Msg;
      dword Disc_No_Polling;
      dword Disc_Training;
      dword Disc_Unexpected;
      dword Disc_Application;
      dword Disc_Incompat;
      dword Disc_No_Command;
      dword Disc_Long_Msg;
      dword Disc_Supervisor;
      dword Disc_SUB_SEP_PWD;
      dword Disc_Invalid_Msg;
      dword Disc_Page_Coding;
      dword Disc_App_Timeout;
      dword Disc_Unspecified;
} diva_fax_call_statistics_t;

typedef struct _diva_prot_statistics {
      dword X_Frames;
      dword X_Bytes;
      dword X_Errors;
      dword R_Frames;
      dword R_Bytes;
      dword R_Errors;
} diva_prot_statistics_t;

typedef struct _diva_ifc_statistics {
      diva_incoming_call_statistics_t     inc;
      diva_outgoing_call_statistics_t outg;
      diva_modem_call_statistics_t        mdm;
      diva_fax_call_statistics_t                fax;
      diva_prot_statistics_t                          b1;
      diva_prot_statistics_t                          b2;
      diva_prot_statistics_t                          d1;
      diva_prot_statistics_t                          d2;
} diva_ifc_statistics_t;

/*
      Structure used to represent "State\\BX" directory
      to user.
      */
typedef struct _diva_trace_line_state {
      dword ChannelNumber;

      char Line[DIVA_TRACE_LINE_TYPE_LEN];

      char Framing[DIVA_TRACE_LINE_TYPE_LEN];

      char Layer2[DIVA_TRACE_LINE_TYPE_LEN];
      char Layer3[DIVA_TRACE_LINE_TYPE_LEN];

      char RemoteAddress[DIVA_TRACE_LINE_TYPE_LEN];
      char RemoteSubAddress[DIVA_TRACE_LINE_TYPE_LEN];

      char LocalAddress[DIVA_TRACE_LINE_TYPE_LEN];
      char LocalSubAddress[DIVA_TRACE_LINE_TYPE_LEN];

      diva_trace_ie_t   call_BC;
      diva_trace_ie_t   call_HLC;
      diva_trace_ie_t   call_LLC;

      dword Charges;

      dword CallReference;

      dword LastDisconnecCause;

      char UserID[DIVA_TRACE_LINE_TYPE_LEN];

      diva_trace_modem_state_t modem;
      diva_trace_fax_state_t   fax;

      diva_trace_interface_state_t* pInterface;

      diva_ifc_statistics_t*                    pInterfaceStat;

} diva_trace_line_state_t;

#define DIVA_SUPER_TRACE_NOTIFY_LINE_CHANGE             ('l')
#define DIVA_SUPER_TRACE_NOTIFY_MODEM_CHANGE            ('m')
#define DIVA_SUPER_TRACE_NOTIFY_FAX_CHANGE              ('f')
#define DIVA_SUPER_TRACE_INTERFACE_CHANGE               ('i')
#define DIVA_SUPER_TRACE_NOTIFY_STAT_CHANGE             ('s')
#define DIVA_SUPER_TRACE_NOTIFY_MDM_STAT_CHANGE         ('M')
#define DIVA_SUPER_TRACE_NOTIFY_FAX_STAT_CHANGE         ('F')

struct _diva_strace_library_interface;
typedef void (*diva_trace_channel_state_change_proc_t)(void* user_context,
                                          struct _diva_strace_library_interface* hLib,
                                          int Adapter,
                                          diva_trace_line_state_t* channel, int notify_subject);
typedef void (*diva_trace_channel_trace_proc_t)(void* user_context,
                                          struct _diva_strace_library_interface* hLib,
                                          int Adapter, void* xlog_buffer, int length);
typedef void (*diva_trace_error_proc_t)(void* user_context,
                                          struct _diva_strace_library_interface* hLib,
                                          int Adapter,
                                          int error, const char* file, int line);

/*
      This structure creates interface from user to library
      */
typedef struct _diva_trace_library_user_interface {
      void*                                                                                                       user_context;
      diva_trace_channel_state_change_proc_t    notify_proc;
      diva_trace_channel_trace_proc_t                             trace_proc;
      diva_trace_error_proc_t                                                 error_notify_proc;
} diva_trace_library_user_interface_t;

/*
      Interface from Library to User
      */
typedef int   (*DivaSTraceLibraryStart_proc_t)(void* hLib);
typedef int   (*DivaSTraceLibraryFinit_proc_t)(void* hLib);
typedef int   (*DivaSTraceMessageInput_proc_t)(void* hLib);
typedef void*     (*DivaSTraceGetHandle_proc_t)(void* hLib);

/*
      Turn Audio Tap trace on/off
      Channel should be in the range 1 ... Number of Channels
      */
typedef int (*DivaSTraceSetAudioTap_proc_t)(void* hLib, int Channel, int on);

/*
      Turn B-channel trace on/off
      Channel should be in the range 1 ... Number of Channels
      */
typedef int (*DivaSTraceSetBChannel_proc_t)(void* hLib, int Channel, int on);

/*
      Turn  D-channel (Layer1/Layer2/Layer3) trace on/off
            Layer1 - All D-channel frames received/sent over the interface
                                     inclusive Layer 2 headers, Layer 2 frames and TEI management frames
            Layer2 - Events from LAPD protocol instance with SAPI of signalling protocol
            Layer3 - All D-channel frames addressed to assigned to the card TEI and
                                     SAPI of signalling protocol, and signalling protocol events.
      */
typedef int (*DivaSTraceSetDChannel_proc_t)(void* hLib, int on);

/*
      Get overall card statistics
      */
typedef int (*DivaSTraceGetOutgoingCallStatistics_proc_t)(void* hLib);
typedef int (*DivaSTraceGetIncomingCallStatistics_proc_t)(void* hLib);
typedef int (*DivaSTraceGetModemStatistics_proc_t)(void* hLib);
typedef int (*DivaSTraceGetFaxStatistics_proc_t)(void* hLib);
typedef int (*DivaSTraceGetBLayer1Statistics_proc_t)(void* hLib);
typedef int (*DivaSTraceGetBLayer2Statistics_proc_t)(void* hLib);
typedef int (*DivaSTraceGetDLayer1Statistics_proc_t)(void* hLib);
typedef int (*DivaSTraceGetDLayer2Statistics_proc_t)(void* hLib);

/*
      Call control
      */
typedef int (*DivaSTraceClearCall_proc_t)(void* hLib, int Channel);

typedef struct _diva_strace_library_interface {
      void* hLib;
  DivaSTraceLibraryStart_proc_t DivaSTraceLibraryStart;
  DivaSTraceLibraryStart_proc_t DivaSTraceLibraryStop;
      DivaSTraceLibraryFinit_proc_t DivaSTraceLibraryFinit;
      DivaSTraceMessageInput_proc_t DivaSTraceMessageInput;
      DivaSTraceGetHandle_proc_t    DivaSTraceGetHandle;
      DivaSTraceSetAudioTap_proc_t  DivaSTraceSetAudioTap;
      DivaSTraceSetBChannel_proc_t  DivaSTraceSetBChannel;
      DivaSTraceSetDChannel_proc_t  DivaSTraceSetDChannel;
      DivaSTraceSetDChannel_proc_t  DivaSTraceSetInfo;
      DivaSTraceGetOutgoingCallStatistics_proc_t \
                                                                                                DivaSTraceGetOutgoingCallStatistics;
      DivaSTraceGetIncomingCallStatistics_proc_t \
                                                                                                DivaSTraceGetIncomingCallStatistics;
      DivaSTraceGetModemStatistics_proc_t \
                                                                                                DivaSTraceGetModemStatistics;
      DivaSTraceGetFaxStatistics_proc_t \
                                                                                                DivaSTraceGetFaxStatistics;
      DivaSTraceGetBLayer1Statistics_proc_t \
                                                                                                DivaSTraceGetBLayer1Statistics;
      DivaSTraceGetBLayer2Statistics_proc_t \
                                                                                                DivaSTraceGetBLayer2Statistics;
      DivaSTraceGetDLayer1Statistics_proc_t \
                                                                                                DivaSTraceGetDLayer1Statistics;
      DivaSTraceGetDLayer2Statistics_proc_t \
                                                                                                DivaSTraceGetDLayer2Statistics;
      DivaSTraceClearCall_proc_t    DivaSTraceClearCall;
} diva_strace_library_interface_t;

/*
      Create and return Library interface
      */
diva_strace_library_interface_t* DivaSTraceLibraryCreateInstance (int Adapter,
                                                                              const diva_trace_library_user_interface_t* user_proc,
                          byte* pmem);
dword DivaSTraceGetMemotyRequirement (int channels);

#define DIVA_MAX_ADAPTERS  64
#define DIVA_MAX_LINES     32

#endif


Generated by  Doxygen 1.6.0   Back to index