#ifndef __USER_INTERFACE_THREAD_H_INCLUDED__
#define __USER_INTERFACE_THREAD_H_INCLUDED__

#include <stdint.h>
#include "socket.h"
#include "threads.h"
#include "control_thread.h"

class UserInterfaceThread : public Thread {
public:
	UserInterfaceThread (
		uint16_t		telnetPortNumber,
		uint16_t 		winchPortNumber,
		uint16_t 		levelWindPortNumber,
		ControlThread&  controller);

	~UserInterfaceThread(void);

protected:
	virtual void* Run(void*);

private:
	void 			processCommands(tcp_socket& socket);
	string			nextToken(const string& line,
						const string& delim,
						string::size_type& first);

	ControlThread&	m_Controller;
	char*			m_MotionControlMoxaIP_Address;
	uint16_t		m_TelnetPortNumber;
	uint16_t		m_WinchPortNumber;
	uint16_t		m_LevelWindPortNumber;
};

#endif /* __USER_INTERFACE_THREAD_H_INCLUDED__ */
