/* * 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