#include <vector>
using namespace std;

#ifndef IVIBBOX_H
#define IVIBBOX_H

class iVIBBox
{
protected:
	bool m_bGotFeature;				//!< Answer to 'Get Feature' received
	unsigned int m_IpAddr;			//!< IPAddress
	unsigned int m_IpSubnet;		//!< IPSubnet
	int m_Feature;					//!< Supported features
	unsigned short m_UpdatePort;	//!< TCP port number for firmware update
	char m_Description[64];
	unsigned char m_MAC[6];

public:	
	virtual ~iVIBBox(){};

	virtual void ResetDevice() =0;	
	virtual bool ChangeIP(DWORD IPAddr, DWORD IpSubnet)=0;

	//probs
	bool Get_bGotFeature(){ return m_bGotFeature;}
	unsigned int Get_IpAddr(){ return m_IpAddr;}
	unsigned int Get_IpSubnet(){ return m_IpSubnet;}
	int Get_Feature(){ return m_Feature;}
	unsigned short Get_UpdatePort() {return m_UpdatePort;}
	char *Get_Description() {return m_Description;}
	void Get_MacAddress(unsigned char MacAddress[6]) {memcpy(MacAddress, m_MAC, 6);}

	void Set_bGotFeature(bool bGotFeature){ m_bGotFeature = bGotFeature;}
	void Set_IpAddr(unsigned int IpAddr){ m_IpAddr =IpAddr;}
	void Set_IpSubnet(unsigned int IpSubnet){ m_IpSubnet = IpSubnet;}
	void Set_Feature(int Feature){ m_Feature = Feature;}
	void Set_UpdatePort(unsigned short port){ m_UpdatePort = port;}
	void Set_MacAddress(unsigned char MacAddress[6]) {memcpy(m_MAC, MacAddress, 6);}
};


#endif 