#include "gd32f10x.h"
#include "main.h"
#include "delay.h"
#include "fmc.h"
#include "ota_message.h"
#include "gd_ota_flash.h"
#include "ec800.h"

#include "boot.h"
#include "w25q32.h"
#include <stdlib.h>

void task_fwdgt_reload(void);
OTA_STRUCT UpDataA;           //A区更新用到的结构体

int main(void)
{
	Delay_Init();
	soft_init();	
	OTA_MESSAGE *ota_data;
	BOOT_MESSAGE current_message;
	GD32_READ_OTA(&current_message);
	Delay_Ms(100);
  if(current_message.UP_FLAG==1)
	{
		//启动EC800，读取内部文件信息进行升级
		gd_com_init();
		dma_config();
		
		gd_EC800M_pin_init();
		EC800MPwoerOn();
		EC800MWaitReady();
		EC800MSetPDP();
//		//EC800启动完成读出文件信息开始更新程序
//		if(read_bin_txt()==1)//成功
//		{
//					//更新完毕程序将升级标志清楚
//		current_message.UP_FLAG=0;
//		write_soft_version(&current_message);
//		LOAD_A(GD32_A_SADDR);
//		}
//		else
//		{
//			NVIC_SystemReset();
//		}
		switch(read_bin_txt())
		{
			case 1://成功
					current_message.UP_FLAG=0;
					write_soft_version(&current_message);
					LOAD_A(GD32_A_SADDR);
			break;
			case 2:
					LOAD_A(GD32_A_SADDR);				
				break;//bin文件不存在
			default:
				NVIC_SystemReset();
				break;//其他情况
		}
		
		
	}
	else
	{
		LOAD_A(GD32_A_SADDR);
	}
	
//	if(load_ota_message_config_params()==0)
//	{
//		//ota事件产生了，进入Bootloader分支
//		ota_data=get_config_params();
//		BootLoader_Brance(ota_data->XmodemByte);
//	}                                       
//	//没有OTA事件产生跳转A区
//	else
//	{
//		LOAD_A(GD32_A_SADDR);
//	}
	current_message.UP_FLAG=1;
	write_soft_version(&current_message);
	NVIC_SystemReset();
	while(1)
	{
		
		
	}
	
}

void task_fwdgt_reload(void)
{
	/* uncock fwdgt write protect*/
	fwdgt_write_enable();
	/* feed fwdgt */
	fwdgt_counter_reload();	
}

