// This is for XP
#define WINVER 0x0501 

#include <afxwin.h>
#include <afxsock.h>
#include <string.h>
#include <windows.h>
#include <math.h>
#include "WinThread_Client.h"
//#include "haptics.h"

HANDLE t_WinThread_C = NULL ;
HANDLE t_hEndEvent_C = NULL ;
DWORD WINAPI ThreadFuncC( LPVOID ) ;

CAsyncSocket CliSock;
bool tConnected=false;

char RecvBuffCli[1024];
char SendBuffCli[1024];

//class CHaptic:public HapticsClass{};
//CHaptic jHaptic;
/******************************************************************************/
BOOL InitWinThread_C( void )
{
	DWORD dwID ;

	// Create an event //
	t_hEndEvent_C = CreateEvent( NULL, TRUE, FALSE, NULL );
	if( !t_hEndEvent_C )return FALSE;

	// Create an thread //
	t_WinThread_C = CreateThread( NULL, 0, ThreadFuncC, NULL, 0, &dwID);

	// initial AfxSock and Create Sock //
	if(!AfxSocketInit()) AfxMessageBox("SOCKETS INIT FAILED");
	if(CliSock.Create()==0) AfxMessageBox("Socket fault to create");


	return t_WinThread_C != NULL ;
}
void UnInitWinThread_C( void )
{
	SetEvent(t_hEndEvent_C);
	WaitForSingleObject( t_WinThread_C, INFINITE );
	CloseHandle( t_hEndEvent_C );
	CloseHandle( t_WinThread_C );
}

/******************************************************************************/
DWORD WINAPI ThreadFuncC( LPVOID )
{
//	jHaptic.init(20);

	int i;

	// Loop 32 times a second until the g_hEndEvent becomes signalled.
	while( WaitForSingleObject(t_hEndEvent_C,10) != WAIT_OBJECT_0 )
	{
		if (tConnected==false){
//			BOOL er=CliSock.Connect("127.0.0.1",3108);
			BOOL er=CliSock.Connect("169.254.220.193",4000);
//			BOOL er=CliSock.Connect("138.25.50.123",3108);
			int error_code=CliSock.GetLastError();
			if (error_code==10056) tConnected=true;
		}
		if (tConnected==true){

			char RecvBuff[50];
			while (strlen(RecvBuff)<29)
			{
				CliSock.Receive(&RecvBuff,30,MSG_PEEK);
			}
			CliSock.Receive(&RecvBuffCli,30);
			CliSock.Send(&RecvBuffCli,30);

//			if(RecvBuffCli[0]=='@')
//			{
//				for (i=0;i<30;i++) SendBuffCli[i]=RecvBuffCli[i];
//				CliSock.Send(&SendBuffCli,30);
//			}
		}
	} //while
	return 0 ;
}
/******************************************************************************/