#ifndef __APP_FOTA_H_
#define __APP_FOTA_H_

#define IP_DOMAIN_SIZE 50

#define AUTH_FOTA_PORT 9138
#define FOTADOMAIN_ADDR   "hgsfota.ratelan.com"

#define HTTP_THREAD_STACK		1024*10
#define AUTH_UDP_THREAD_STACK	1024*4


#define UDP_HEART_TICK_NON_4G       60
#define UDP_HEART_TICK__4G          60


typedef enum{	
	DISENABLE,
	ENABLE,
}FOTA_STATUE;

typedef struct{
	FOTA_STATUE fota_statue;
	unsigned char GetVer_flag;	//h��ȡ���汾��־
}FOTA_INFO;

extern FOTA_INFO AppFotaInfo;


typedef struct{
	unsigned char  reg:1;
	unsigned char pdp:1;
	unsigned char netReady:1;
	unsigned char tcp:1;
	unsigned char resetPDP:1;
	unsigned char tcpAccountErrReCnt;
}NET_DEF;
extern NET_DEF netWork;


typedef struct{
	unsigned char status:4; //0 
	unsigned char result:2;
	unsigned char address[IP_DOMAIN_SIZE+1];
}DOMAIN_INFO_DEF;


typedef struct{
	unsigned int fd;
	unsigned short port;
	signed char *saddr; 
	unsigned char tupType;
	LSAPI_SOCK_Callback *tupRecvCallBack;
	unsigned char errno;  
	unsigned short stacksize;
	LSAPI_SOCK_TcpipSocketAddr_t sockAddr;
}TUPSEND_DEF ;

extern TUPSEND_DEF tupsendPara;


typedef enum{
	TUP_TCP=0x30,
	TUP_UDP=0x31
}TUP_ENUM;

extern DOMAIN_INFO_DEF domainInfo;
extern char targetVersion[10];


void tupParaSet(TUPSEND_DEF *para, unsigned short port, LSAPI_SOCK_Callback *callback,unsigned short stacksize);
void MS5700_Networking(unsigned int interval);
void Domain_Process(unsigned int interval);
void FOTA_Process(unsigned char interval);
void authFotaRecv_cb(void *param);
 void infoPacketAndSend(unsigned int psn,char *imei, char *version,char *modemType,unsigned char udpvalue2_3,unsigned char udpvalue4);


#endif