#include "includes.h"

const char invalidIp[]="1.1.1.1";
SYSINI_HS191X_DEF newPara;
char menu_key[6]="502800";//�����Դ�ļ�û�ж������룬��Ĭ������Ϊ��
int newSysiniIndex=-1;
unsigned char UniToGBKIndex;
void testing(void);
void ShowDetail(void);
void newSysIniRead(void)
{
	int len;
	char needsave=0;
	newSysiniIndex=GetFileIndex(SYS_CONFIG);
	if(newSysiniIndex<0){
		printf("%s not found\r\n",SYS_CONFIG);
		return;
	}
	len=GetFileLen(newSysiniIndex);
	if(len<sizeof(SYSINI_HS191X_DEF)){
		printf("%s SYS_CONFIG len err\r\n",SYS_CONFIG);
		return;
	}
	ReadFileData(newSysiniIndex, 0, sizeof(SYSINI_HS191X_DEF), (unsigned char *)&newPara);
	#if 1
	//ShowDetail();
	validApnNum = 4;
	//Ҫ��Ӧ���в����ĺϷ������ж�
	if(newPara.serList.defaultuse>SER_US){
		newPara.serList.defaultuse=SER_HZ;
		needsave=1;
	}
	if(newPara.apnList.defaultuse>APN_APN4){
		newPara.apnList.defaultuse=APN_APN1;
		needsave=1;
	}
	if(newPara.lcdParaDefaultIndex>=5){
		newPara.lcdParaDefaultIndex=0;
		needsave=1;
	}
	if(newPara.gpsTimeIndex>=GPS_TABLE_NUM){
		newPara.gpsTimeIndex=0;
		needsave=1;
	}
	if(newPara.pwrMode>=PWR_MODE_NUM){
		newPara.pwrMode=0;
		needsave=1;
	}
	if(newPara.ConfigFlag==0){//������¹���
//		sutGpsCtl.reTryAuthTimes=1;
//		sutGpsCtl.reTryPerSeconds=1;
		newPara.ConfigFlag=1;
		needsave=1;
	}else{
//		sutGpsCtl.reTryAuthTimes=3;
//		sutGpsCtl.reTryPerSeconds=15;
	}
	getPIPAddr();
	getGIPAddr();
	if(newPara.serverMenuPass!=NULL) memcpy(menu_key, newPara.serverMenuPass,6);
	if(needsave != 0) ModifyConfigureFile(0);
	#else
	testing();
	#endif
}

void ShowDetail(void)
{
	char buf[30];
	int len;
	int i;
	
	printf("Len=%d,%d\r\n",len,sizeof(SYSINI_HS191X_DEF));
	printf("CFlag:%d,Mode:%d,ttsType:%d,ttsMess:%s\r\n",newPara.ConfigFlag,newPara.Mode,newPara.ttsCodeType,newPara.ttsMessage);
	memcpy(buf, newPara.serverMenuPass,6);buf[6]=0;
	printf("pass:%s,SmsFlag=%c,SmdAddr:%x,lcd:%d,%d,%d,%d,%d,useLcd=%d,auth:%d\r\n", buf, newPara.messageResetFlag,newPara.messageNewAddr,newPara.lcdParaList[0],newPara.lcdParaList[1],newPara.lcdParaList[2],newPara.lcdParaList[3],newPara.lcdParaList[4],newPara.lcdParaDefaultIndex,newPara.authType);
  printf("zh pip:%s,gip:%s\r\n", newPara.serList.zh.pip, newPara.serList.zh.gip);
	printf("sd pip:%s,gip:%s\r\n", newPara.serList.sd.pip, newPara.serList.sd.gip);
	printf("ur pip:%s,gip:%s\r\n", newPara.serList.ur.pip, newPara.serList.ur.gip);
	printf("ipfa:%s\r\n", newPara.serList.ipFenFa);
	printf("jiqun:%s\r\n", newPara.serList.jiqun);
	printf("server use:%d\r\n", newPara.serList.defaultuse);
	
	for(i=0;i<4;i++){
		printf("APN%d acc:%s, pass:%s\r\n", i,newPara.apnList.apnList[i].account, newPara.apnList.apnList[i].pass);
	}
	printf("APN def=%d, showflag=%d\r\n", newPara.apnList.defaultuse, newPara.apnList.apnShowFlag);
  printf("netMode:%d\r\n",newPara.netMode);
}

void tryToModifyData(void)
{
#if 1
//	newPara.lcdParaList[0]=77;
//	newPara.lcdParaList[1]=88;
//	newPara.lcdParaList[2]=99;
//	ModifyConfigureFile();
	SUT_FILE_PAGE_HEAD pageinfo;
	
	pageinfo.mark=FILE_HEAD_END;
	sFlash_Write((unsigned char *)&pageinfo, g_sutFilesList.FileInfo[g_sutFilesList.FileCount-1].FileAddr, sizeof(SUT_FILE_PAGE_HEAD));
#endif
}

void testing(void)
{
#if 0
	ShowDetail();
	//tryToModifyData();
	while(1){
		IWDG_ReloadCounter();
		DelayMs(500);
		printf("tick\r\n");
	}
#endif
}

char *getPIPAddr(void)
{
	char *retAddr=NULL;
	switch(newPara.serList.defaultuse){
		case SER_HZ:retAddr=newPara.serList.zh.pip;break;
		case SER_SD:retAddr=newPara.serList.sd.pip;break;
		case SER_IP:retAddr=(char *)invalidIp;break;
		case SER_JIQUN:retAddr=(char *)invalidIp;break;
		case SER_US:retAddr=newPara.serList.ur.pip;break;
	}
	memset(showPIP, 0,sizeof(showPIP));
	strcpy(showPIP, retAddr);
	return retAddr;
}

char buBiaoAddrChange=0;
char *getGIPAddr(void)
{
	char *retAddr=NULL;
	switch(newPara.serList.defaultuse){
		case SER_HZ:retAddr=newPara.serList.zh.gip;break;
		case SER_SD:retAddr=newPara.serList.sd.gip;break;
		case SER_IP:break; //IP�ַ��ͼ�Ⱥ���ʱ��GPS��ַʹ�ü�Ⱥ��IP�ַ�����������ģ�����ֱ�ӷ���NULL
		case SER_JIQUN:break;//IP�ַ��ͼ�Ⱥ���ʱ��GPS��ַʹ�ü�Ⱥ��IP�ַ�����������ģ�����ֱ�ӷ���NULL
		case SER_US:retAddr=newPara.serList.ur.gip;break;
	}
	if(retAddr==NULL) showGIP[0]=0;
	else strcpy(showGIP, retAddr);
	buBiaoAddrChange=1;
	return retAddr;
}

char *getDOMAINAddr(void)
{
	char *retAddr=NULL;
	switch(newPara.serList.defaultuse){
		case SER_HZ:break;
		case SER_SD:break;
		case SER_IP:retAddr=newPara.serList.ipFenFa;break;
		case SER_JIQUN:retAddr=newPara.serList.jiqun;break;
		case SER_US:break;
	}
	return retAddr;
}