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