|
|
//Copyright (c) 1998 - 1999 Microsoft Corporation
#ifndef _ASYNCDLG_H
#define _ASYNCDLG_H
#define ULONG_DIGIT_MAX 12
#define UINT_DIGIT_MAX 7
#define UCHAR_DIGIT_MAX 5
#define WM_ADDWINSTATION (WM_USER + 0)
#define WM_LISTINITERROR (WM_USER + 1)
#define WM_EDITSETFIELDSERROR (WM_USER + 2)
#define WM_ASYNCTESTERROR (WM_USER + 3)
#define WM_ASYNCTESTABORT (WM_USER + 4)
#define WM_ASYNCTESTSTATUSREADY (WM_USER + 5)
#define WM_ASYNCTESTINPUTREADY (WM_USER + 6)
#define WM_ASYNCTESTWRITECHAR (WM_USER + 7)
#define NUM_LEDS 6
#define MAX_COMMAND_LEN 255
////////////////////////////////////////////////////////////////////////////////
class CAsyncDlg { HWND m_hDlg;
ICfgComp * m_pCfgcomp;
INT_PTR m_nHexBase;
TCHAR m_szWinstation[ WINSTATIONNAME_LENGTH + 1 ];
TCHAR m_szWDName[ WDNAME_LENGTH + 1 ];
INT m_nOldAsyncDeviceNameSelection;
INT m_nOldAsyncConnectType;
INT m_nOldBaudRate;
INT m_nOldModemCallBack; public:
ASYNCCONFIG m_ac;
ASYNCCONFIG m_oldAC;
USERCONFIG m_uc;
public:
CAsyncDlg( );
BOOL OnInitDialog( HWND , LPTSTR , LPTSTR , ICfgComp * );
void OnClickedAsyncModemcallbackPhonenumberInherit( );
void OnClickedAsyncModemcallbackInherit( );
void OnClickedModemProperties();
BOOL OnSelchangeAsyncDevicename( );
BOOL OnSelchangeAsyncConnect();
BOOL OnSelchangeAsyncModemcallback() ;
void OnSelchangeAsyncModemcallbackPhoneNumber() ;
BOOL OnSelchangeAsyncBaudrate();
BOOL OnCommand( WORD , WORD , HWND , PBOOL );
HRESULT SetDefaults( );
HRESULT DoAsyncAdvance( );
BOOL DoAsyncTest( );
BOOL AsyncRelease( );
BOOL GetAsyncFields(ASYNCCONFIG& AsyncConfig,USERCONFIG UsrCfg);
HRESULT SetAsyncFields(ASYNCCONFIG& AsyncConfig , PUSERCONFIG ); };
////////////////////////////////////////////////////////////////////////////////
class CAdvancedAsyncDlg {
/*
* Member variables. */ public: ASYNCCONFIG m_Async; BOOL m_bReadOnly; BOOL m_bModem; INT_PTR m_nHexBase; ULONG m_nWdFlag; HWND m_hDlg; ICfgComp *m_pCfgcomp;
/*
* Implementation. */ public: CAdvancedAsyncDlg();
static INT_PTR CALLBACK DlgProc( HWND , UINT , WPARAM , LPARAM );
BOOL OnCommand( WORD , WORD , HWND );
int GetCheckedRadioButton( int , int );
BOOL OnInitDialog( HWND hDlg , WPARAM wp , LPARAM lp );
/*
* Operations. */ protected: BOOL HandleEnterEscKey(int nID); void SetFields(); void SetHWFlowText(); void SetGlobalFields(); void SetHWFields(); void SetSWFields(); BOOL GetFields(); void GetFlowControlFields(); BOOL GetGlobalFields(); BOOL GetHWFields(); BOOL GetSWFields( BOOL bValidate );
/*
* Message map / commands. */ protected: void OnClickedAsyncAdvancedFlowcontrolHardware(); void OnClickedAsyncAdvancedFlowcontrolSoftware(); void OnClickedAsyncAdvancedFlowcontrolNone(); void OnClickedAsyncAdvancedBasedec(); void OnClickedAsyncAdvancedBasehex(); void OnCloseupAsyncAdvancedHwrx(); void OnSelchangeAsyncAdvancedHwrx(); void OnCloseupAsyncAdvancedHwtx(); void OnSelchangeAsyncAdvancedHwtx(); void OnOK(); void OnCancel();
};
////////////////////////////////////////////////////////////////////////////////
class cwnd { public:
HWND m_hWnd;
WNDPROC m_oldproc;
};
////////////////////////////////////////////////////////////////////////////////
// CEchoEditControl class
//
class CEchoEditControl : public cwnd { friend class CAsyncTestDlg;
/*
* Member variables. */ public: BOOL m_bProcessingOutput; HWND m_hDlg; int m_FontHeight; int m_FontWidth; int m_FormatOffsetX; int m_FormatOffsetY;
/*
* Message map / commands. */ void OnChar (UINT nChar, UINT nRepCnt, UINT nFlags);
void SubclassDlgItem( HWND , int );
static LRESULT CALLBACK WndProc( HWND , UINT , WPARAM , LPARAM ); }; // end CEchoEditControl class interface
////////////////////////////////////////////////////////////////////////////////
// CLed class
//
class CLed : public cwnd {
private: HBRUSH m_hBrush; BOOL m_bOn;
/*
* Implementation. */ public: CLed( HBRUSH hBrush );
/*
* Operations. */ public: void Subclass( HWND , int ); void Update(int nOn); void Toggle();
/*
* Message map / commands. */
void OnPaint( HWND );
static LRESULT CALLBACK WndProc( HWND , UINT , WPARAM , LPARAM );
};
////////////////////////////////////////////////////////////////////////////////
class CThread {
/*
* Member variables. */ public: HANDLE m_hThread; DWORD m_dwThreadID;
/*
* Implementation */ public:
virtual ~CThread();
CThread();
static DWORD __stdcall ThreadEntryPoint(LPVOID lpParam);
virtual DWORD RunThread() = 0;
/*
* Operations: primary thread */
HANDLE CreateThread( DWORD cbStack = 0 , DWORD fdwCreate = 0 );
}; // end CThread class interface
////////////////////////////////////////////////////////////////////////////////
// CATDlgInputThread class
//
#define MAX_STATUS_SEMAPHORE_COUNT 1
#define MAX_SLEEP_COUNT 10
class CATDlgInputThread : public CThread {
/*
* Member variables. */ public: HWND m_hDlg; HANDLE m_hDevice; ASYNCCONFIG m_ac; PROTOCOLSTATUS m_Status; BYTE m_Buffer[MAX_COMMAND_LEN+1]; DWORD m_BufferBytes;
DWORD m_ErrorStatus; HANDLE m_hConsumed; BOOL m_bExit; DWORD m_EventMask; OVERLAPPED m_OverlapSignal; OVERLAPPED m_OverlapRead;
/*
* Implementation */
CATDlgInputThread();
virtual ~CATDlgInputThread(); virtual DWORD RunThread();
/*
* Operations: primary thread. */
void SignalConsumed(); void ExitThread();
/*
* Operations: secondary thread. */
void NotifyAbort( UINT idError ); int CommInputNotify(); int CommStatusAndNotify(); int PostInputRead(); int PostStatusRead();
}; // end CATDlgInputThread class interface
///////////////////////////////////////////////////////////////////////////////
// CAsyncTestDlg class
//
class CAsyncTestDlg {
/*
* Member variables. */ HWND m_hDlg;
ICfgComp * m_pCfgComp;
public: ASYNCCONFIG m_ac; PDCONFIG m_PdConfig1; PWINSTATIONNAME m_pWSName; CEchoEditControl m_EditControl;
protected: HANDLE m_hDevice; HBRUSH m_hRedBrush; UINT_PTR m_LEDToggleTimer; PROTOCOLSTATUS m_Status; CATDlgInputThread *m_pATDlgInputThread; OVERLAPPED m_OverlapWrite; BYTE m_Buffer[MAX_COMMAND_LEN+1]; INT_PTR m_CurrentPos; DWORD m_BufferBytes; TCHAR m_szModemInit[MAX_COMMAND_LEN+1]; TCHAR m_szModemDial[MAX_COMMAND_LEN+1]; TCHAR m_szModemListen[MAX_COMMAND_LEN+1]; HANDLE m_hModem; BOOL m_bDeletedWinStation; CLed * m_pLeds[NUM_LEDS]; WINSTATIONCONFIG2 m_WSConfig;
/*
* Implementation. */ public: CAsyncTestDlg(ICfgComp * pCfgComp = NULL); ~CAsyncTestDlg();
/*
* Operations. */
void NotifyAbort( UINT idError ); BOOL DeviceSetParams(); BOOL DeviceWrite(); void SetInfoFields( PPROTOCOLSTATUS pCurrent, PPROTOCOLSTATUS pNew ); void OutputToEditControl( BYTE *pBuffer, int *pIndex );
/*
* Message map / commands. */
BOOL OnInitDialog( HWND hDlg , WPARAM wp , LPARAM lp );
BOOL OnCommand( WORD , WORD , HWND );
void OnTimer(UINT nIDEvent); LRESULT OnAsyncTestError(WPARAM wParam, LPARAM lParam); LRESULT OnAsyncTestAbort(WPARAM wParam, LPARAM lParam); LRESULT OnAsyncTestStatusReady(WPARAM wParam, LPARAM lParam); LRESULT OnAsyncTestInputReady(WPARAM wParam, LPARAM lParam); LRESULT OnAsyncTestWriteChar(WPARAM wParam, LPARAM lParam); void OnClickedAtdlgModemDial(); void OnClickedAtdlgModemInit(); void OnClickedAtdlgModemListen(); void OnNcDestroy(); cwnd *GetDlgItem( int nRes );
static INT_PTR CALLBACK DlgProc( HWND , UINT , WPARAM , LPARAM );
}; // end CAsyncTestDlg class interface
#define ASYNC_LED_TOGGLE_MSEC 200
#endif // _ASYNCDLG_H
|