// PalmTool.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "PalmTool.h"
#include "PalmToolDlg.h"

#include "TcpSocket.h"

#include "Rs232Thread.h"
#include "UdpAudioThread.h"
#include "UdpDebugThread.h"
#include "Rj45Thread.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPalmToolApp

BEGIN_MESSAGE_MAP(CPalmToolApp, CWinApp)
	//{{AFX_MSG_MAP(CPalmToolApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPalmToolApp construction

CPalmToolApp::CPalmToolApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CPalmToolApp object

CPalmToolApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CPalmToolApp initialization

BOOL CPalmToolApp::InitInstance()
{
	// Standard initialization
	// If you are not using these features and wish to reduce the size
	//  of your final executable, you should remove from the following
	//  the specific initialization routines you do not need.

#ifdef _AFXDLL
	Enable3dControls();			// Call this when using MFC in a shared DLL
#else
	Enable3dControlsStatic();	// Call this when linking to MFC statically
#endif

	SetRegistryKey(_T("Palmmicro Communications"));

	if (!CTcpSocket::Startup())
	{
		AfxMessageBox("Winsock 2.0 failed");
		return FALSE;
	}

	CRs232Thread::PrepareEvent();
	CUdpAudioThread::PrepareEvent();
	CUdpDebugThread::PrepareEvent();
	CRj45Thread::PrepareEvent();

	CPalmToolDlg dlg;
	m_pMainWnd = &dlg;
	dlg.DoModal();

	CRs232Thread::UnprepareEvent();
	CUdpAudioThread::UnprepareEvent();
	CUdpDebugThread::UnprepareEvent();
	CRj45Thread::UnprepareEvent();
	CTcpSocket::Shutdown();

	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}
