package com.tcl.factory.bsp;

import com.tcl.factory.thirdparty.ThirdParty;
import com.tcl.factory.utils.Debug;
import com.tcl.factory.utils.Utils;

public class Setup {
	private static String TAG = "Setup";
	
	static String HdcpKeyBakUrl = "/data/factory/hdcpKey.bak";
	static String DeviceIDBakUrl = "/data/factory/deviceID.bak";
	static String MacBakUrl = "/data/factory/mac.bak";
	static String SNBakUrl = "/data/factory/sn.bak";
	
	public static boolean pollingHdcpCRC() {
		// 还需找f1对接
		return false;
//		int crc1=ThirdParty.getHdcpKeyCRC();
//		int crc2=(int)ConfigType.CRCCalculate(ThirdParty.getHdcpKeyShort(),ConfigType.HDCP_KEY_SIZE);
//		if(crc1==crc2) return true;
//		else {
//			Debug.v(TAG, "[pollingHdcpCRC]failed crc1/2 = "+crc1+"/"+crc2);
//			return false;
//		}
	}
	public static boolean pollingHdcp20CRC() {
		// 还需找f1对接
		return false;
//		int crc1=ThirdParty.getHdcpKey20CRC();
//		int crc2=(int)ConfigType.CRCCalculate(ThirdParty.getHdcpKey20Short(),ConfigType.HDCP_KEY_2_0_SIZE);
//		if(crc1==crc2) return true;
//		else {
//			Debug.v(TAG, "[pollingHdcp20CRC]failed crc1/2 = "+crc1+"/"+crc2);
//			return false;
//		}
	}
	public static boolean pollingDeviceIDCRC() {
		// 还需找f1对接
		return false;
//		int crc1=ThirdParty.getDeviceIDCRC();
//		int crc2=(int)ConfigType.CRCCalculate(ThirdParty.getDeviceIDShort(),ConfigType.DEVICE_ID_SIZE);
//		
//		if(crc1==crc2) return true;
//		else {
//			Debug.v(TAG, "[pollingDeviceIDCRC]failed crc1/2 = "+crc1+"/"+crc2);
//			return false;
//		}
	}
	public static boolean pollingMacCRC() {
		// 还需找f1对接
				return false;
//		int crc1=ThirdParty.getMacCRC();
//		int crc2=(int)ConfigType.CRCCalculate(ThirdParty.getMACAddressShort(),ConfigType.MAC_SIZE/2);
//		
//		if(crc1==crc2) return true;
//		else {
//			Debug.v(TAG, "[pollingMacCRC]failed crc1/2 = "+crc1+"/"+crc2);
//			return false;
//		}
	}
	public static boolean pollingSNCRC() {
		// 还需找f1对接
				return false;
//		int crc1=ThirdParty.getSNCRC();
//		int crc2=(int)ConfigType.CRCCalculate(ThirdParty.getDeviceIDShort(),ConfigType.SN_SIZE);
//		
//		if(crc1==crc2) return true;
//		else {
//			Debug.v(TAG, "[pollingSNCRC]failed crc1/2 = "+crc1+"/"+crc2);
//			return false;
//		}
	}
	
	public static boolean pollingHdcpBak() {
		// 还需找f1对接
				return false;
//		int len = ConfigType.HDCP_KEY_SIZE+ConfigType.HDCP_KEY_CRC_SIZE;
//		byte[] data = new byte[len];
//		TCL.readTVStorageFile(HdcpKeyBakUrl,0,data,len);
//		
//		int lowValue = data[len-2];
//		int highValue = data[len-1];
//		int crc1 = ((highValue << 8) & 0xff00) + (lowValue & 0xff);
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.HDCP_KEY_SIZE);
//		
//		if(crc1==crc2) return true;
//		else {
//			Debug.v(TAG, "[pollingHdcpBak]failed crc1/2 = "+crc1+"/"+crc2);
//			return false;
//		}
	}

	public static boolean pollingDeviceIDBak() {
		// 还需找f1对接
				return false;
//		int len = ConfigType.DEVICE_ID_SIZE+2;
//		byte[] data = new byte[len];
//		TCL.readTVStorageFile(DeviceIDBakUrl,0,data,len);
//		
//		int lowValue = data[len-2];
//		int highValue = data[len-1];
//		int crc1 = ((highValue << 8) & 0xff00) + (lowValue & 0xff);
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.DEVICE_ID_SIZE);
//		
//		if(crc1==crc2) return true;
//		else {
//			Debug.v(TAG, "[pollingDeviceIDBak]failed crc1/2 = "+crc1+"/"+crc2);
//			return false;
//		}
	}
	public static boolean pollingMacBak() {
		// 还需找f1对接
				return false;
//		int len = ConfigType.DEVICE_ID_SIZE+2;
//		byte[] data = new byte[len];
//		TCL.readTVStorageFile(MacBakUrl,0,data,len);
//		
//		int lowValue = data[len-2];
//		int highValue = data[len-1];
//		int crc1 = ((highValue << 8) & 0xff00) + (lowValue & 0xff);
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.MAC_SIZE);
//		
//		if(crc1==crc2) return true;
//		else {
//			Debug.v(TAG, "[pollingMacBak]failed crc1/2 = "+crc1+"/"+crc2);
//			return false;
//		}
	}
	public static boolean pollingSNBak() {
		// 还需找f1对接
				return false;
//		int len = ConfigType.SN_SIZE+2;
//		byte[] data = new byte[len];
//		TCL.readTVStorageFile(SNBakUrl,0,data,len);
//		
//		int lowValue = data[len-2];
//		int highValue = data[len-1];
//		int crc1 = ((highValue << 8) & 0xff00) + (lowValue & 0xff);
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.SN_SIZE);
//		
//		if(crc1==crc2) return true;
//		else {
//			Debug.v(TAG, "[pollingSNBak]failed crc1/2 = "+crc1+"/"+crc2);
//			return false;
//		}
	}
	public static void syncHdcpBak() {
		// 还需找f1对接
//		int len = ConfigType.HDCP_KEY_SIZE+2;
//		byte[] data = Utils.short2Byte(ThirdParty.getHdcpKeyShort());
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.HDCP_KEY_SIZE);
//		
//		TCL.writeTVStorageFile(HdcpKeyBakUrl,0,data,len);
	}

	public static void syncDeviceIDBak() {
		// 还需找f1对接
//		int len = ConfigType.DEVICE_ID_SIZE+2;
//		byte[] data = Utils.short2Byte(ThirdParty.getDeviceIDShort());
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.DEVICE_ID_SIZE);
//		
//		TCL.writeTVStorageFile(DeviceIDBakUrl,0,data,len);
	}
	public static void syncMacBak() {
		// 还需找f1对接
//		int len = ConfigType.MAC_SIZE+2;
//		byte[] data = Utils.short2Byte(ThirdParty.getMACAddressShort());
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.MAC_SIZE);
//		
//		TCL.writeTVStorageFile(MacBakUrl,0,data,len);
	}
	public static void syncSNBak() {
		// 还需找f1对接
//		int len = ConfigType.SN_SIZE+2;
//		byte[] data = Utils.short2Byte(ThirdParty.getSNShort());
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.SN_SIZE);
//		
//		TCL.writeTVStorageFile(SNBakUrl,0,data,len);
	}
	public static void rollbackHdcpBak() {
//		int len = ConfigType.HDCP_KEY_SIZE+2;
//		byte[] data = new byte[len];
//		TCL.readTVStorageFile(HdcpKeyBakUrl,0,data,len);
//		
//		int lowValue = data[len-2];
//		int highValue = data[len-1];
//		int crc1 = ((highValue << 8) & 0xff00) + (lowValue & 0xff);
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.HDCP_KEY_SIZE);
		

	}
	public static void rollbackDeviceIDBak() {
//		int len = ConfigType.DEVICE_ID_SIZE+2;
//		byte[] data = new byte[len];
//		TCL.readTVStorageFile(DeviceIDBakUrl,0,data,len);
//		
//		int lowValue = data[len-2];
//		int highValue = data[len-1];
//		int crc1 = ((highValue << 8) & 0xff00) + (lowValue & 0xff);
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.DEVICE_ID_SIZE);
		

	}
	public static void rollbackMacBak() {
//		int len = ConfigType.DEVICE_ID_SIZE+2;
//		byte[] data = new byte[len];
//		TCL.readTVStorageFile(MacBakUrl,0,data,len);
//		
//		int lowValue = data[len-2];
//		int highValue = data[len-1];
//		int crc1 = ((highValue << 8) & 0xff00) + (lowValue & 0xff);
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.MAC_SIZE);
		

	}
	public static void rollbackSNBak() {
//		int len = ConfigType.SN_SIZE+2;
//		byte[] data = new byte[len];
//		TCL.readTVStorageFile(SNBakUrl,0,data,len);
//		
//		int lowValue = data[len-2];
//		int highValue = data[len-1];
//		int crc1 = ((highValue << 8) & 0xff00) + (lowValue & 0xff);
//		int crc2=(int)ConfigType.CRCCalculate(Utils.byte2Short(data),ConfigType.SN_SIZE);
		
	}
	
	
	public static void SetupFactoryCheck() {
		if(!pollingHdcpCRC()) {
			if(pollingHdcpBak()) {
				rollbackHdcpBak();
			}
			else {
				Debug.v(TAG,"[WARNING]pollingHdcpCRC+pollingHdcpBak failed!");
			}
		}
		else {
			syncHdcpBak();
		}
		//
		if(!pollingDeviceIDCRC()) {
			if(pollingDeviceIDBak()) {
				rollbackDeviceIDBak();
			}			
			else {
				Debug.v(TAG,"[WARNING]pollingDeviceIDCRC+pollingDeviceIDBak failed!");
			}
		}
		else {
			syncDeviceIDBak();
		}
		//
		if(!pollingMacCRC()) {
			if(pollingMacBak()) {
				rollbackMacBak();
			}
			else {
				Debug.v(TAG,"[WARNING]pollingMacCRC+pollingMacBak failed!");
			}
		}
		else {
			syncMacBak();
		}
		//
		if(!pollingSNCRC()) {
			if(pollingSNBak()) {
				rollbackSNBak();
			}
			else {
				Debug.v(TAG,"[WARNING]pollingSNCRC+pollingSNBak failed!");
			}
		}
		else {
			syncSNBak();
		}
	}
	
}
