/*++ BUILD Version: 0000 // Increment this if a change has global effects Copyright (c) 1995-1998 Microsoft Corporation Module Name: espexe.h Abstract: Author: Dan Knudson (DanKn) 15-Sep-1995 Revision History: --*/ #include "windows.h" #include "tapi.h" #include "tspi.h" #include "..\tsp\intrface.h" #include "resource.h" #include "espidl.h" #define MAX_STRING_PARAM_SIZE 32 #define PT_DWORD 1 #define PT_FLAGS 2 #define PT_STRING 3 #define PT_ORDINAL 4 typedef struct _MYWIDGET { DWORD dwWidgetID; DWORD dwWidgetType; ULONG_PTR hdXxx; ULONG_PTR htXxx; DWORD dwCallState; DWORD dwCallAddressID; struct _MYWIDGET *pPrev; struct _MYWIDGET *pNext; } MYWIDGET, *PMYWIDGET; typedef struct _LOOKUP { DWORD dwVal; char far *pszVal; } LOOKUP, *PLOOKUP; typedef struct _PBXSETTING { DWORD dwNumber; LPCSTR pszEvent; DWORD dwTime; } PBXSETTING, *PPBXSETTING; typedef struct _EVENT_PARAM { char far *szName; DWORD dwType; ULONG_PTR dwValue; union { PLOOKUP pLookup; char far *buf; LPVOID ptr; ULONG_PTR dwDefValue; }; } EVENT_PARAM, far *PEVENT_PARAM; typedef struct _EVENT_PARAM_HEADER { DWORD dwNumParams; LPSTR pszDlgTitle; DWORD dwEventType; PEVENT_PARAM aParams; } EVENT_PARAM_HEADER, far *PEVENT_PARAM_HEADER; LOOKUP aPBXNumbers[] = { { 0, "0" }, { 1, "1" }, { 2, "2" }, { 5, "5" }, { 10, "10" }, { 20, "20" }, { 50, "50" }, { 100, "100" }, { 200, "200" }, { 500, "500" }, { 1000, "1000" }, { 0, NULL } }; LOOKUP aPBXTimes[] = { { 1000, "second" }, { 60000, "minute" }, { 3600000, "hour" }, { 86400000, "day" }, { 604800000, "week" }, { 0, NULL } }; #define NUM_PBXSETTINGS 2 PBXSETTING gPBXSettings[NUM_PBXSETTINGS] = { { 0, "incoming calls", 0 }, { 0, "disconnections", 0 } }; LOOKUP aCallStates[] = { { LINECALLSTATE_IDLE ,"IDLE" }, { LINECALLSTATE_OFFERING ,"OFFERING" }, { LINECALLSTATE_ACCEPTED ,"ACCEPTED" }, { LINECALLSTATE_DIALTONE ,"DIALTONE" }, { LINECALLSTATE_DIALING ,"DIALING" }, { LINECALLSTATE_RINGBACK ,"RINGBACK" }, { LINECALLSTATE_BUSY ,"BUSY" }, { LINECALLSTATE_SPECIALINFO ,"SPECIALINFO" }, { LINECALLSTATE_CONNECTED ,"CONNECTED" }, { LINECALLSTATE_PROCEEDING ,"PROCEEDING" }, { LINECALLSTATE_ONHOLD ,"ONHOLD" }, { LINECALLSTATE_CONFERENCED ,"CONFERENCED" }, { LINECALLSTATE_ONHOLDPENDCONF ,"ONHOLDPENDCONF" }, { LINECALLSTATE_ONHOLDPENDTRANSFER ,"ONHOLDPENDTRANSFER" }, { LINECALLSTATE_DISCONNECTED ,"DISCONNECTED" }, { LINECALLSTATE_UNKNOWN ,"UNKNOWN" }, { 0xffffffff ,"" } }; LOOKUP aLineErrs[] = { { 0 ,"" }, { LINEERR_ALLOCATED ,"ALLOCATED" }, { LINEERR_BADDEVICEID ,"BADDEVICEID" }, { LINEERR_BEARERMODEUNAVAIL ,"BEARERMODEUNAVAIL" }, { LINEERR_CALLUNAVAIL ,"CALLUNAVAIL" }, { LINEERR_COMPLETIONOVERRUN ,"COMPLETIONOVERRUN" }, { LINEERR_CONFERENCEFULL ,"CONFERENCEFULL" }, { LINEERR_DIALBILLING ,"DIALBILLING" }, { LINEERR_DIALDIALTONE ,"DIALDIALTONE" }, { LINEERR_DIALPROMPT ,"DIALPROMPT" }, { LINEERR_DIALQUIET ,"DIALQUIET" }, { LINEERR_INCOMPATIBLEAPIVERSION ,"INCOMPATIBLEAPIVERSION" }, { LINEERR_INCOMPATIBLEEXTVERSION ,"INCOMPATIBLEEXTVERSION" }, { LINEERR_INIFILECORRUPT ,"INIFILECORRUPT" }, { LINEERR_INUSE ,"INUSE" }, { LINEERR_INVALADDRESS ,"INVALADDRESS" }, { LINEERR_INVALADDRESSID ,"INVALADDRESSID" }, { LINEERR_INVALADDRESSMODE ,"INVALADDRESSMODE" }, { LINEERR_INVALADDRESSSTATE ,"INVALADDRESSSTATE" }, { LINEERR_INVALAPPHANDLE ,"INVALAPPHANDLE" }, { LINEERR_INVALAPPNAME ,"INVALAPPNAME" }, { LINEERR_INVALBEARERMODE ,"INVALBEARERMODE" }, { LINEERR_INVALCALLCOMPLMODE ,"INVALCALLCOMPLMODE" }, { LINEERR_INVALCALLHANDLE ,"INVALCALLHANDLE" }, { LINEERR_INVALCALLPARAMS ,"INVALCALLPARAMS" }, { LINEERR_INVALCALLPRIVILEGE ,"INVALCALLPRIVILEGE" }, { LINEERR_INVALCALLSELECT ,"INVALCALLSELECT" }, { LINEERR_INVALCALLSTATE ,"INVALCALLSTATE" }, { LINEERR_INVALCALLSTATELIST ,"INVALCALLSTATELIST" }, { LINEERR_INVALCARD ,"INVALCARD" }, { LINEERR_INVALCOMPLETIONID ,"INVALCOMPLETIONID" }, { LINEERR_INVALCONFCALLHANDLE ,"INVALCONFCALLHANDLE" }, { LINEERR_INVALCONSULTCALLHANDLE ,"INVALCONSULTCALLHANDLE" }, { LINEERR_INVALCOUNTRYCODE ,"INVALCOUNTRYCODE" }, { LINEERR_INVALDEVICECLASS ,"INVALDEVICECLASS" }, { LINEERR_INVALDEVICEHANDLE ,"INVALDEVICEHANDLE" }, { LINEERR_INVALDIALPARAMS ,"INVALDIALPARAMS" }, { LINEERR_INVALDIGITLIST ,"INVALDIGITLIST" }, { LINEERR_INVALDIGITMODE ,"INVALDIGITMODE" }, { LINEERR_INVALDIGITS ,"INVALDIGITS" }, { LINEERR_INVALEXTVERSION ,"INVALEXTVERSION" }, { LINEERR_INVALGROUPID ,"INVALGROUPID" }, { LINEERR_INVALLINEHANDLE ,"INVALLINEHANDLE" }, { LINEERR_INVALLINESTATE ,"INVALLINESTATE" }, { LINEERR_INVALLOCATION ,"INVALLOCATION" }, { LINEERR_INVALMEDIALIST ,"INVALMEDIALIST" }, { LINEERR_INVALMEDIAMODE ,"INVALMEDIAMODE" }, { LINEERR_INVALMESSAGEID ,"INVALMESSAGEID" }, { LINEERR_INVALPARAM ,"INVALPARAM" }, { LINEERR_INVALPARKID ,"INVALPARKID" }, { LINEERR_INVALPARKMODE ,"INVALPARKMODE" }, { LINEERR_INVALPOINTER ,"INVALPOINTER" }, { LINEERR_INVALPRIVSELECT ,"INVALPRIVSELECT" }, { LINEERR_INVALRATE ,"INVALRATE" }, { LINEERR_INVALREQUESTMODE ,"INVALREQUESTMODE" }, { LINEERR_INVALTERMINALID ,"INVALTERMINALID" }, { LINEERR_INVALTERMINALMODE ,"INVALTERMINALMODE" }, { LINEERR_INVALTIMEOUT ,"INVALTIMEOUT" }, { LINEERR_INVALTONE ,"INVALTONE" }, { LINEERR_INVALTONELIST ,"INVALTONELIST" }, { LINEERR_INVALTONEMODE ,"INVALTONEMODE" }, { LINEERR_INVALTRANSFERMODE ,"INVALTRANSFERMODE" }, { LINEERR_LINEMAPPERFAILED ,"LINEMAPPERFAILED" }, { LINEERR_NOCONFERENCE ,"NOCONFERENCE" }, { LINEERR_NODEVICE ,"NODEVICE" }, { LINEERR_NODRIVER ,"NODRIVER" }, { LINEERR_NOMEM ,"NOMEM" }, { LINEERR_NOREQUEST ,"NOREQUEST" }, { LINEERR_NOTOWNER ,"NOTOWNER" }, { LINEERR_NOTREGISTERED ,"NOTREGISTERED" }, { LINEERR_OPERATIONFAILED ,"OPERATIONFAILED" }, { LINEERR_OPERATIONUNAVAIL ,"OPERATIONUNAVAIL" }, { LINEERR_RATEUNAVAIL ,"RATEUNAVAIL" }, { LINEERR_RESOURCEUNAVAIL ,"RESOURCEUNAVAIL" }, { LINEERR_REQUESTOVERRUN ,"REQUESTOVERRUN" }, { LINEERR_STRUCTURETOOSMALL ,"STRUCTURETOOSMALL" }, { LINEERR_TARGETNOTFOUND ,"TARGETNOTFOUND" }, { LINEERR_TARGETSELF ,"TARGETSELF" }, { LINEERR_UNINITIALIZED ,"UNINITIALIZED" }, { LINEERR_USERUSERINFOTOOBIG ,"USERUSERINFOTOOBIG" }, { LINEERR_REINIT ,"REINIT" }, { LINEERR_ADDRESSBLOCKED ,"ADDRESSBLOCKED" }, { LINEERR_BILLINGREJECTED ,"BILLINGREJECTED" }, { LINEERR_INVALFEATURE ,"INVALFEATURE" }, { LINEERR_NOMULTIPLEINSTANCE ,"NOMULTIPLEINSTANCE" }, { 0xffffffff ,"" } }; LOOKUP aLineMsgs[] = { { LINE_ADDRESSSTATE ,"ADDRESSSTATE" }, { LINE_CALLDEVSPECIFIC ,"CALLDEVSPECIFIC" }, { LINE_CALLDEVSPECIFICFEATURE ,"CALLDEVSPECIFICFEATURE" }, { LINE_CREATEDIALOGINSTANCE ,"CREATEDIALOGINSTANCE" }, { LINE_CLOSE ,"CLOSE" }, { LINE_DEVSPECIFIC ,"DEVSPECIFIC" }, { LINE_DEVSPECIFICFEATURE ,"DEVSPECIFICFEATURE" }, { LINE_GATHERDIGITS ,"GATHERDIGITS" }, { LINE_GENERATE ,"GENERATE" }, { LINE_LINEDEVSTATE ,"LINEDEVSTATE" }, { LINE_MONITORDIGITS ,"MONITORDIGITS" }, { LINE_MONITORMEDIA ,"MONITORMEDIA" }, { LINE_MONITORTONE ,"MONITORTONE" }, { LINE_CREATE ,"CREATE" }, { LINE_REMOVE ,"REMOVE" }, { LINE_SENDDIALOGINSTANCEDATA ,"SENDDIALOGINSTANCEDATA" }, { 0xffffffff ,"" } }; LOOKUP aPhoneMsgs[] = { { PHONE_BUTTON ,"BUTTON" }, { PHONE_CLOSE ,"CLOSE" }, { PHONE_DEVSPECIFIC ,"DEVSPECIFIC" }, { PHONE_STATE ,"STATE" }, { PHONE_CREATE ,"CREATE" }, { PHONE_REMOVE ,"REMOVE" }, { 0xffffffff ,"" } }; LOOKUP aVersions[] = { { 0x00010003 ,"1.0" }, { 0x00010004 ,"1.4" }, { 0x00020000 ,"2.0" }, { 0x00020001 ,"2.1" }, { 0x00020002 ,"2.2" }, { 0x00030000 ,"3.0" }, { 0x00030001 ,"3.1" }, { 0xffffffff ,"" } }; BOOL gbESPLoaded = FALSE; gbPBXThreadRunning, gbAutoClose, gbDisableUI; LONG cxList1, cxWnd; HWND ghwndMain, ghwndList1, ghwndList2, ghwndEdit; DWORD gdwTSPIVersion, gdwNumLines, gdwNumAddrsPerLine, gdwNumCallsPerAddr, gdwNumPhones, gdwDebugOptions, gdwCompletionMode, gbAutoGatherGenerateMsgs; HMENU ghMenu; HINSTANCE ghInstance; PMYWIDGET gpWidgets; char szMySection[] = "ESP32"; INT_PTR CALLBACK MainWndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); INT_PTR CALLBACK PBXConfigDlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); INT_PTR CALLBACK AboutDlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); INT_PTR CALLBACK HelpDlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); void ProcessWidgetEvent( PWIDGETEVENT pEvent ); void UpdateESPOptions( void ); void SaveIniFileSettings( void ); void xxxShowStr( char *psz ); void ShowStr( char *pszFormat, ... ); LPVOID MyAlloc( size_t numBytes ); void MyFree( LPVOID p ); INT_PTR CALLBACK ValuesDlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );