#include <iostream>
#include <vector>
#include <string>
#include <map>
#include "htra_api.h"
using namespace std;

int Device_GetAndSetIP()
{
	int Status = 0;

	uint8_t DeviceCount;                              //设备数量。
	NetworkDeviceInfo_TypeDef NetworkDeviceInfo[100]; //设备信息，包括IP地址、子网掩码、UID等。

	uint8_t LocalIP[4];
	uint8_t LocalMask[4];
	Status = Device_GetNetworkDeviceList(&DeviceCount, NetworkDeviceInfo, LocalIP, LocalMask); //获取网络中所有网络设备的IP地址和子网掩码等信息。

	uint8_t IPAddress[4] = { 192,168,3,101 };  //设置更改的IP。
	uint8_t SubnetMask[4] = { 255,255,255,0 }; //设置更改的子网掩码。

#if 0 //通过设备UID设置IP地址。
	uint64_t DeviceUID = NetworkDeviceInfo[0].DeviceUID;                  //使用时注意对应设备号对应。
	Status = Device_SetNetworkDeviceIP(DeviceUID, IPAddress, SubnetMask); //通过设备UID设置IP地址。
#else //通过设备IP设置IP地址。
	uint8_t DeviceIP[4] = { NetworkDeviceInfo[0].IPAddress[0], NetworkDeviceInfo[0].IPAddress[1],NetworkDeviceInfo[0].IPAddress[2],NetworkDeviceInfo[0].IPAddress[3] }; //输入设备当前IP。																													   //设置更改的子网掩码。
	Status = Device_SetNetworkDeviceIP_PM1(DeviceIP, IPAddress, SubnetMask);                                                                                            //通过设备IP设置IP地址。
#endif

	Status = Device_GetNetworkDeviceList(&DeviceCount, NetworkDeviceInfo, LocalIP, LocalMask); //获取网络中所有网络设备的IP地址和子网掩码等信息（NetworkDeviceInfo中）。

	cout << "Current DeviceIP：" << NetworkDeviceInfo[0].IPAddress[0] << "." <<  NetworkDeviceInfo[0].IPAddress[1] << "." << NetworkDeviceInfo[0].IPAddress[2] << "." << NetworkDeviceInfo[0].IPAddress[3] << endl;
	cout << "Current DeviceMask：" << NetworkDeviceInfo[0].SubnetMask[0] << "." << NetworkDeviceInfo[0].SubnetMask[0] << "." << NetworkDeviceInfo[0].SubnetMask[0] << "." << NetworkDeviceInfo[0].SubnetMask[0] << endl;

	//若Device_Open返回非0，则程序结束。
	if (Status) {
		return 0;
	}

	return 0;
}