421 lines
8 KiB
C
421 lines
8 KiB
C
|
//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
|
||
|
|