Ejemplo n.º 1
0
BOOL keyupg_burnflash(UINT32 chunk_id, char *buffer_adr,UINT32 buffer_size)
{
	UINT32 chunk_len,chunk_addr;
	UINT32 param;	
	struct sto_device *f_dev;
	UINT32 sector_count=0;


	api_get_chuck_addlen(chunk_id, &chunk_addr, &chunk_len);//chunk_addr is the real data addr not include header

	if ((f_dev = (struct sto_device *)dev_get_by_id(HLD_DEV_TYPE_STO, 0)) == NULL)
	{
		libc_printf("ERROR: Not found Flash device!\n");
		return FALSE;
	}
	
	if(chunk_id==HDCPKEY_CHUNK_ID)
	{
		//hdcp key,need rewrite bootloader
		UINT8	*bootloader_sector = NULL;	
		CHUNK_HEADER bloader_chuck_hdr;
		
		sto_get_chunk_header(BLOADER_CHUNK_ID,&bloader_chuck_hdr);
		bootloader_sector = (UINT8 *)MALLOC(sizeof(UINT8)*(bloader_chuck_hdr.offset));

		sto_lseek(f_dev, 0x00, STO_LSEEK_SET);
		sto_read(f_dev, bootloader_sector, bloader_chuck_hdr.offset);
		
		/*
		param = 0x00;
		param = param << 10;
		param +=( (SECTOR_SIZE*(bloader_chuck_hdr.offset/SECTOR_SIZE+1)) >> 10);
		sto_io_control(f_dev, STO_DRIVER_SECTOR_ERASE, param);
		*/
		for(sector_count=0;sector_count< ((bloader_chuck_hdr.offset-1)/SECTOR_SIZE+1);sector_count++)
		{
			param = 0x00+sector_count*SECTOR_SIZE;
			param = param << 10;	/* Lower 10 bits of LSB is length in K bytes*/
			param += SECTOR_SIZE >> 10;
			sto_io_control(f_dev, STO_DRIVER_SECTOR_ERASE_EXT, param);
		}
				
		sto_lseek(f_dev, 0x00, STO_LSEEK_SET);
		sto_write(f_dev, bootloader_sector, bloader_chuck_hdr.offset);

		CHUNK_HEADER hdcp_chuck_hdr;
		//sto_get_chunk_header(chunk_id,&hdcp_chuck_hdr);
		hdcp_chuck_hdr.id = data_change_for_sto(chunk_id);
		hdcp_chuck_hdr.len = data_change_for_sto(buffer_size);
	       hdcp_chuck_hdr.offset = data_change_for_sto(0x200);
	      	hdcp_chuck_hdr.crc = data_change_for_sto(0x4e435243);
		strcpy(hdcp_chuck_hdr.name,"HDCPKey");
		strcpy(hdcp_chuck_hdr.version,"Encrypted");
		strcpy(hdcp_chuck_hdr.time,"2010.09.01");
		sto_write(f_dev,&hdcp_chuck_hdr,sizeof(CHUNK_HEADER));
		sto_write(f_dev,buffer_adr, buffer_size);
		
		FREE(bootloader_sector);	
	}
Ejemplo n.º 2
0
static PRESULT factoryset_btn_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;	
	//PRESULT ret = PROC_LEAVE;	
	VACTION unact;
	UINT8 bID,back_saved;
	win_popup_choice_t choice;
	UINT32 chunk_id, default_db_addr, default_db_len;

	bID = OSD_GetObjID(pObj);
	
	switch(event)
	{
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(unact == VACT_ENTER)
		{
		       ret = PROC_LEAVE;
			if(bID == BTN_NO_ID)
			{
				break;
			}
			
			//win_compopup_init(WIN_POPUP_TYPE_OKNO);
			//win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
			//win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
			//choice = win_compopup_open_ext(&back_saved);
			//if(choice == WIN_POP_CHOICE_YES)
			{
				win_compopup_init(WIN_POPUP_TYPE_SMSG);
				win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
				win_compopup_open_ext(&back_saved);

				chunk_id = 0x03FC0100;
				api_get_chuck_addlen(chunk_id, &default_db_addr, &default_db_len);
				set_default_value(DEFAULT_ALL_PROG,default_db_addr + 16);

				sys_data_factroy_init(); 
				//sys_data_set_factory_reset(TRUE);
				sys_data_set_cur_chan_mode(TV_CHAN);
				sys_data_save(TRUE);
				sys_data_load();
				if(GetMuteState())
					SetMuteOnOff(FALSE);
				if(GetPauseState())
					SetPauseOnOff(FALSE);
				win_compopup_smsg_restoreback();
				// PRESULT ret = PROC_LEAVE;
				//ap_send_msg(CTRL_MSG_SUBTYPE_CMD_EXIT_ROOT, (UINT32)&g_win_PALNTSC,FALSE);
			}
		
		}
		break;
	}

	return ret;
}
Ejemplo n.º 3
0
static INT32 win_otaupg_set_memory(void)
{
	UINT32 addr_offset, len;
	m_ota_info.uncompressed_addr = __MM_PVR_VOB_BUFFER_ADDR;
	m_ota_info.uncompressed_len = 0x500000;
	m_ota_info.compressed_addr = m_ota_info.uncompressed_addr+m_ota_info.uncompressed_len;
	m_ota_info.compressed_len = 0x300000;//0x200000;
	m_ota_info.swap_addr = m_ota_info.compressed_addr + m_ota_info.compressed_len;
	m_ota_info.swap_len = 256*1024;
	m_ota_info.backup_db_addr = m_ota_info.swap_addr+m_ota_info.swap_len;
	m_ota_info.backup_db_size = 0x300000;//0x200000;
	p_otaosd_buff = (UINT8 *)((m_ota_info.backup_db_addr+m_ota_info.backup_db_size)|0xa0000000);
	// init user_db addrss
	api_get_chuck_addlen(0x04FB0100, &addr_offset, &len);
	m_ota_info.user_db_addr_offset = addr_offset;
	m_ota_info.user_db_len = len;

	m_ota_info.user_db_addr = addr_offset+SYS_FLASH_BASE_ADDR;
	m_ota_info.user_db_start_sector = m_ota_info.user_db_addr_offset/C_SECTOR_SIZE;
	m_ota_info.user_db_sectors = m_ota_info.user_db_len/C_SECTOR_SIZE;

	if(m_ota_info.user_db_len%C_SECTOR_SIZE)
	{
		ASSERT(0);
		m_ota_info.user_db_sectors++;
	}

	ota_mem_config(
		m_ota_info.compressed_addr,
		m_ota_info.compressed_len,
		m_ota_info.uncompressed_addr,
		m_ota_info.uncompressed_len,
		m_ota_info.swap_addr,
		m_ota_info.swap_len);

	return 0;
}
Ejemplo n.º 4
0
static BOOL SetupOtaParameters()
{
	UINT32 addr,address;
	UINT32 len, lenth;
#if 1
	UINT32 chid_key = 0x07F80100;
	UINT32 chid_db = 0x04FB0100;
	UINT32 chid = 0x01FE0101;

	m_ota_info.uncompressed_len = (UINT32)get_unzip_size((UINT8 *)m_ota_info.compressed_addr);
	chunk_init(m_ota_info.uncompressed_addr,m_ota_info.uncompressed_len);

if ((UINT8*)chunk_goto(&chid, 0xFFFFFFFF, 1) != NULL)
{
	// get unzip size;
	if(!get_chuck_add_len(0x04FB0100, &addr, &len))
	{
	      OTA_PRINTF("--------get_chuck_add_len failed -------- \n");
		return FALSE;
	}

	// find the firmware position	
	m_ota_info.ota_fw_addr = m_ota_info.uncompressed_addr;
	m_ota_info.ota_fw_size = addr + len - m_ota_info.ota_fw_addr;
		
	// find ota.bin position.
	m_ota_info.ota_bin_addr = m_ota_info.ota_fw_addr + m_ota_info.ota_fw_size;
	m_ota_info.ota_bin_size = m_ota_info.uncompressed_len - m_ota_info.ota_fw_size;
	m_ota_info.ota_bin_sectors = m_ota_info.ota_bin_size/C_SECTOR_SIZE;
	if(len % C_SECTOR_SIZE)
		m_ota_info.ota_bin_sectors++;

	// calculate upgrade sectors.
	m_ota_info.ota_upg_addr = m_ota_info.ota_fw_addr + C_SECTOR_SIZE; //skip bootloader sector.
	m_ota_info.ota_upg_size = m_ota_info.ota_fw_size - len - C_SECTOR_SIZE;	//skip bootloader and user_db
	m_ota_info.ota_upg_sectors = m_ota_info.ota_upg_size/C_SECTOR_SIZE;
	if(m_ota_info.ota_upg_size % C_SECTOR_SIZE)
		m_ota_info.ota_upg_sectors++;

	
	m_ota_info.update_secotrs_index = 0;
#ifdef _BUILD_OTA_E_
	m_ota_info.update_total_sectors = m_ota_info.ota_upg_sectors + \
		m_ota_info.user_db_sectors;
#else
	m_ota_info.update_total_sectors = m_ota_info.ota_upg_sectors + \
		m_ota_info.ota_bin_sectors + m_ota_info.user_db_sectors;
#endif
	// find ota_cfg chunk.
	chunk_init(m_ota_info.ota_bin_addr,m_ota_info.ota_bin_size);
	UINT32 chid = 0x15Fa0200;
	UINT8 *p = (UINT8*)chunk_goto(&chid, 0xFFFFFFFF, 1);
	if(p)
	{
		m_ota_info.ota_bin_cfg_addr = (UINT32)p;
		ota_save_parameter(p);
	}
	OTA_PRINTF("ota_bin_sectors1111111111 == %d \n", m_ota_info.ota_bin_sectors);
	OTA_PRINTF("ota_bin_size1111111111 == %d \n", m_ota_info.ota_bin_size);
	burning_flag = 1;
	return TRUE;

}

else  
{
//key
 if( (UINT8*)chunk_goto(&chid_key, 0xFFFFFFFF, 1) != NULL && (UINT8*)chunk_goto(&chid_db, 0xFFFFFFFF, 1) == NULL)
 	{
	m_ota_info.uncompressed_len = (UINT32)get_unzip_size((UINT8 *)m_ota_info.compressed_addr);

	chunk_init(m_ota_info.uncompressed_addr,m_ota_info.uncompressed_len);
	if(!get_chuck_add_len(0x07F80100, &addr, &len))
	{
	      OTA_PRINTF("--------get_chuck_add_len failed -------- \n");
		return FALSE;
	}

	m_ota_info.ota_fw_addr = m_ota_info.uncompressed_addr;
	m_ota_info.ota_fw_size = addr + len - m_ota_info.ota_fw_addr;

	m_ota_info.ota_upg_addr = m_ota_info.ota_fw_addr + 0*C_SECTOR_SIZE;
	m_ota_info.ota_upg_size = len;
	m_ota_info.ota_upg_sectors = 1;

	m_ota_info.update_secotrs_index = 0;
	m_ota_info.update_total_sectors = 1 ;

	api_get_chuck_addlen(0x07F80100, &addr, &len);
		m_ota_info.ota_fw_size = addr/C_SECTOR_SIZE;//now ,ota_fw_size is key block num
		
	chunk_init(m_ota_info.ota_bin_addr,m_ota_info.ota_bin_size);
	UINT32 chid = 0x15Fa0200;
	UINT8 *p = (UINT8*)chunk_goto(&chid, 0xFFFFFFFF, 1);
	if(p)
	{
		m_ota_info.ota_bin_cfg_addr = (UINT32)p;
		ota_save_parameter(p);
	}

	OTA_PRINTF("ota_fw_size == 0x%08x \n", m_ota_info.ota_fw_size);
	OTA_PRINTF("ota_upg_addr1111111111 == 0x%08x \n", m_ota_info.ota_upg_addr);

	OTA_PRINTF("ota_upg_size1111111111 == 0x%08x \n", m_ota_info.ota_upg_size);
	OTA_PRINTF("ota_upg_sectors1111111111 == %d \n", m_ota_info.ota_upg_sectors);
	burning_flag = 2;
	return TRUE;
 	}
 //db
 if( (UINT8*)chunk_goto(&chid_key, 0xFFFFFFFF, 1) == NULL && (UINT8*)chunk_goto(&chid_db, 0xFFFFFFFF, 1) != NULL)
 	{
 		//OTA_PRINTF("ttttttttttttt  \n");

		m_ota_info.uncompressed_len = (UINT32)get_unzip_size((UINT8 *)m_ota_info.compressed_addr);

		chunk_init(m_ota_info.uncompressed_addr,m_ota_info.uncompressed_len);
		if(!get_chuck_add_len(0x04FB0100, &addr, &len))
		{
			return FALSE;
		}
		OTA_PRINTF("addr == 0x%08x \n", addr);
		OTA_PRINTF("len == 0x%08x \n", len);
		m_ota_info.ota_fw_addr = m_ota_info.uncompressed_addr;
		m_ota_info.ota_fw_size = addr + len - m_ota_info.ota_fw_addr;

		m_ota_info.ota_upg_addr = m_ota_info.ota_fw_addr;
		m_ota_info.ota_upg_size = m_ota_info.ota_fw_size;
		//m_ota_info.ota_upg_size = len;
		m_ota_info.ota_upg_sectors = m_ota_info.ota_upg_size/C_SECTOR_SIZE;
		//if(m_ota_info.ota_upg_size % C_SECTOR_SIZE)
		//	m_ota_info.ota_upg_sectors++;

		m_ota_info.update_secotrs_index = 0;
		m_ota_info.update_total_sectors = m_ota_info.ota_upg_sectors ;

		chunk_init(m_ota_info.ota_bin_addr,m_ota_info.ota_bin_size);
		UINT32 chid = 0x15Fa0200;
		UINT8 *p = (UINT8*)chunk_goto(&chid, 0xFFFFFFFF, 1);
		if(p)
		{
			m_ota_info.ota_bin_cfg_addr = (UINT32)p;
			ota_save_parameter(p);
		}
		burning_2 =2;
		//OTA_PRINTF("burning_2 == %d \n", burning_2);
		OTA_PRINTF("ota_upg_addr1111111111 == 0x%08x \n", m_ota_info.ota_upg_addr);

		OTA_PRINTF("ota_upg_size1111111111 == 0x%08x \n", m_ota_info.ota_upg_size);
		OTA_PRINTF("ota_upg_sectors1111111111 == %d \n", m_ota_info.ota_upg_sectors);

		return TRUE;
 	}
 //key + db
 if( (UINT8*)chunk_goto(&chid_key, 0xFFFFFFFF, 1) != NULL && (UINT8*)chunk_goto(&chid_db, 0xFFFFFFFF, 1) != NULL)
 	{
		m_ota_info.uncompressed_len = (UINT32)get_unzip_size((UINT8 *)m_ota_info.compressed_addr);

		chunk_init(m_ota_info.uncompressed_addr,m_ota_info.uncompressed_len);
		if(!get_chuck_add_len(0x04FB0100, &addr, &len))
		{
			return FALSE;
		}
		if(!get_chuck_add_len(0x07F80100, &address, &lenth))
		{
			return FALSE;
		}

		m_ota_info.ota_fw_addr = m_ota_info.uncompressed_addr;
		m_ota_info.ota_fw_size = lenth;

		m_ota_info.ota_upg_addr = m_ota_info.ota_fw_addr;
		m_ota_info.ota_upg_size = lenth;
		m_ota_info.ota_upg_sectors = 1;
		//if(m_ota_info.ota_upg_size % C_SECTOR_SIZE)
		//	m_ota_info.ota_upg_sectors++;

		//m_ota_info.ota_fw_addr2 = m_ota_info.uncompressed_addr;
		m_ota_info.ota_fw_size2 = len;

		m_ota_info.ota_upg_addr2 = addr;
		m_ota_info.ota_upg_size2 = len;
		m_ota_info.ota_upg_sectors2 =  m_ota_info.ota_upg_size2/C_SECTOR_SIZE;
		if(m_ota_info.ota_upg_size2 % C_SECTOR_SIZE)
			m_ota_info.ota_upg_sectors2++;

		m_ota_info.update_secotrs_index = 0;
		m_ota_info.update_total_sectors = m_ota_info.ota_upg_sectors +m_ota_info.ota_upg_sectors2  ;

		api_get_chuck_addlen(0x07F80100, &address, &lenth);
		m_ota_info.ota_fw_size = address/C_SECTOR_SIZE;//now ,ota_fw_size is key block num
		
		chunk_init(m_ota_info.ota_bin_addr,m_ota_info.ota_bin_size);
		UINT32 chid = 0x15Fa0200;
		UINT8 *p = (UINT8*)chunk_goto(&chid, 0xFFFFFFFF, 1);
		if(p)
		{
			m_ota_info.ota_bin_cfg_addr = (UINT32)p;
			ota_save_parameter(p);
		}

		OTA_PRINTF("ota_fw_addr == 0x%08x \n", m_ota_info.ota_fw_addr);
		OTA_PRINTF("ota_fw_size1111111111 == 0x%08x \n", m_ota_info.ota_fw_size);
		OTA_PRINTF("ota_upg_addr1111111111 == 0x%08x \n", m_ota_info.ota_upg_addr);
		OTA_PRINTF("ota_upg_size1111111111 == 0x%08x \n", m_ota_info.ota_upg_size);
		OTA_PRINTF("ota_upg_sectors1111111111 == %d \n", m_ota_info.ota_upg_sectors);
		OTA_PRINTF("ota_upg_addr2 == 0x%08x \n", m_ota_info.ota_upg_addr2);
		OTA_PRINTF("ota_upg_size2 == 0x%08x \n", m_ota_info.ota_upg_size2);
		OTA_PRINTF("ota_upg_sectors2 == %d \n", m_ota_info.ota_upg_sectors2);
		burning_flag = 3 ;
		return TRUE;
 	}

}
#else
	// get unzip size;
	m_ota_info.uncompressed_len = (UINT32)get_unzip_size((UINT8 *)m_ota_info.compressed_addr);

	chunk_init(m_ota_info.uncompressed_addr,m_ota_info.uncompressed_len);
	if(!get_chuck_add_len(0x04FB0100, &addr, &len))
	{
	      OTA_PRINTF("--------get_chuck_add_len failed -------- \n");
		return FALSE;
	}

	// find the firmware position	
	m_ota_info.ota_fw_addr = m_ota_info.uncompressed_addr;
	m_ota_info.ota_fw_size = addr + len - m_ota_info.ota_fw_addr;
		
	// find ota.bin position.
	m_ota_info.ota_bin_addr = m_ota_info.ota_fw_addr + m_ota_info.ota_fw_size;
	m_ota_info.ota_bin_size = m_ota_info.uncompressed_len - m_ota_info.ota_fw_size;
	m_ota_info.ota_bin_sectors = m_ota_info.ota_bin_size/C_SECTOR_SIZE;
	if(len % C_SECTOR_SIZE)
		m_ota_info.ota_bin_sectors++;

	// calculate upgrade sectors.
	m_ota_info.ota_upg_addr = m_ota_info.ota_fw_addr + C_SECTOR_SIZE; //skip bootloader sector.
	m_ota_info.ota_upg_size = m_ota_info.ota_fw_size - len - C_SECTOR_SIZE;	//skip bootloader and user_db
	m_ota_info.ota_upg_sectors = m_ota_info.ota_upg_size/C_SECTOR_SIZE;
	if(m_ota_info.ota_upg_size % C_SECTOR_SIZE)
		m_ota_info.ota_upg_sectors++;

	
	m_ota_info.update_secotrs_index = 0;
#ifdef _BUILD_OTA_E_
	m_ota_info.update_total_sectors = m_ota_info.ota_upg_sectors + \
		m_ota_info.user_db_sectors;
#else
	m_ota_info.update_total_sectors = m_ota_info.ota_upg_sectors + \
		m_ota_info.ota_bin_sectors + m_ota_info.user_db_sectors;
#endif
	// find ota_cfg chunk.
	chunk_init(m_ota_info.ota_bin_addr,m_ota_info.ota_bin_size);
	UINT32 chid = 0x15Fa0200;
	UINT8 *p = (UINT8*)chunk_goto(&chid, 0xFFFFFFFF, 1);
	if(p)
	{
		m_ota_info.ota_bin_cfg_addr = (UINT32)p;
		ota_save_parameter(p);
	}
	OTA_PRINTF("ota_bin_sectors1111111111 == %d \n", m_ota_info.ota_bin_sectors);
	OTA_PRINTF("ota_bin_size1111111111 == %d \n", m_ota_info.ota_bin_size);
	return TRUE;
#endif

}
Ejemplo n.º 5
0
static PRESULT factoryset_btn_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;	
	VACTION unact;
	UINT8 bID,back_saved;
	UINT32 chunk_id, default_db_addr, default_db_len;
	S_NODE  s_node;
	bID = OSD_GetObjID(pObj);
	INT16 	i,n;
	UINT8 back_saved1;
	UINT16 sat_id;//-a by wangyang 2011-11-03 for factory set del sat program
	win_popup_choice_t choice = WIN_POP_CHOICE_NO;
	
	switch(event)
	{
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(unact == VACT_ENTER)
		{
			switch(bID)
			{
				case IDC_CON1:
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);

						chunk_id = 0x03FC0100;
						api_get_chuck_addlen(chunk_id, &default_db_addr, &default_db_len);
						set_default_value(DEFAULT_ALL_PROG,default_db_addr + 16);

						sys_data_factroy_init(); 
						sys_data_set_cur_chan_mode(TV_CHAN);
						sys_data_save(TRUE);
						sys_data_load();
						if(GetMuteState())
							SetMuteOnOff(FALSE);
						if(GetPauseState())
							SetPauseOnOff(FALSE);
						win_compopup_smsg_restoreback();
					#ifdef LOGO_IN_RAM
						api_show_Test_logo_2(MM_tool3,get_logo_h_file_size(3));
                           	 	#endif
						OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
						wincom_open_subtitle((POBJECT_HEAD)&win_factoryset_con,RS_TOOLS_FACTORY_SETTING, 0);
						OSD_TrackObject( (POBJECT_HEAD) &win_factoryset_con, C_UPDATE_ALL);
					#if defined(ORDER_GZ1010010)||defined(ORDER_GZ1011005)||defined(ORDER_GZ1104005)	
						system_config.tv_scan_mode = 0;
					#endif	

						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
					break;
				case IDC_CON2:
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);
						osal_task_sleep(1500);
						si_monitor_off(0xFFFFFFFF);
						n = get_sat_num(VIEW_ALL);
					
						recreate_prog_view(VIEW_ALL | PROG_TV_MODE,0);
						for(i=0;i<n;i++)
						{
							get_sat_at(i, VIEW_ALL,&s_node);
							del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
						}
					
						update_data();
						sys_data_check_channel_groups();	
						win_compopup_smsg_restoreback();

						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
                        		break;
				case IDC_CON3:
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);
 						osal_task_sleep(1500);

						si_monitor_off(0xFFFFFFFF);
						n = get_sat_num(VIEW_ALL);
					
						recreate_prog_view(VIEW_ALL | PROG_RADIO_MODE,0);
						for(i=0;i<n;i++)
						{
							get_sat_at(i, VIEW_ALL,&s_node);
							del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
						}
					
						update_data();
						sys_data_check_channel_groups();	
						win_compopup_smsg_restoreback();

						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
                        		break;
				case IDC_CON4:
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);

						sys_data_factroy_init(); 
						sys_data_set_cur_chan_mode(TV_CHAN);
						sys_data_save(TRUE);
						sys_data_load();
			        		win_compopup_smsg_restoreback();
					#ifdef LOGO_IN_RAM
				   		api_show_Test_logo_2(MM_tool3,get_logo_h_file_size(3));
                              	#endif
						OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
						wincom_open_subtitle((POBJECT_HEAD)&win_factoryset_con,RS_TOOLS_FACTORY_SETTING, 0);
						OSD_TrackObject( (POBJECT_HEAD) &win_factoryset_con, C_UPDATE_ALL);

						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
                    			break;
//-a by wangyang 2011-11-03 for factory set del sat program{{
				case IDC_CON5:

				if(OSD_GetMultiselCount(&factoryset_sel5)==0)
				{
					win_compopup_init(WIN_POPUP_TYPE_SMSG);
					win_compopup_set_msg(NULL,NULL, RS_MSG_NO_CHANNELS);
					win_compopup_open_ext(&back_saved1);
					osal_task_sleep(1000);
					win_compopup_smsg_restoreback();
				}
				else
				{
					sat_id=OSD_GetMultiselSel(&factoryset_sel5);
					win_compopup_init(WIN_POPUP_TYPE_OKNO);
					win_compopup_set_msg(NULL, NULL, RS_DISPLAY_SURE_TO_DELETE);
					win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
					choice = win_compopup_open_ext(&back_saved1);
					if(choice == WIN_POP_CHOICE_YES)
					{
					//	mm_enter_stop_mode(FALSE);
					//	api_show_menu_logo();
						if(api_is_playing_tv()  || api_is_playing_radio())
						{
							api_stop_play(1);
						}
						win_compopup_init(WIN_POPUP_TYPE_SMSG);
						win_compopup_set_msg(NULL,NULL, RS_MSG_SAVING_DATA);
						win_compopup_open_ext(&back_saved);
						osal_task_sleep(1500);
						si_monitor_off(0xFFFFFFFF);
						//n = get_sat_num(VIEW_ALL);
						
						recreate_prog_view(VIEW_ALL | PROG_TVRADIO_MODE,0);
						//for(i=0;i<n;i++)
						{
							get_sat_at(sat_id, SET_SELECTED,&s_node);
							del_child_prog(TYPE_SAT_NODE, s_node.sat_id);
						}
						
						update_data();
						sys_data_check_channel_groups();	
						win_compopup_smsg_restoreback();
						// Restart the unit after Factory Default in any case
						osal_task_sleep(1200);
						power_off_process();
						power_on_process();
					}
				}
                        		break;
//-a by wangyang 2011-11-03 for factory set del sat program}}
				default:
					break;
			}
			
		}
		break;
	}

	return ret;
}
Ejemplo n.º 6
0
static void reset_factory_setting()
{
	UINT8 bID, back_saved;
	win_popup_choice_t choice;
	UINT32 chunk_id, default_db_addr, default_db_len;
	
	CONTAINER *factory_msg_con;
	factory_msg_con = &fac_msg_con;
	TEXT_FIELD *factory_msg_txt;
	factory_msg_txt = &factoryset_msg;

	MULTISEL *factory_multisel;
	factory_multisel = &factory_state;
	api_stop_play(1);
	epg_reset();
	
	OSD_SetTextFieldContent(factory_msg_txt, STRING_ID, (UINT32)RS_FACTORY_RESTORING);
	OSD_DrawObject((POBJECT_HEAD)factory_msg_txt, C_UPDATE_ALL);
	OSD_DrawObject((POBJECT_HEAD)factory_msg_con, C_UPDATE_ALL);
	//老版本弹出恢复出厂信息
	//win_compopup_init(WIN_POPUP_TYPE_SMSG);
	//win_compopup_set_msg(NULL, NULL, RS_FACTORY_RESTORING);
	//win_compopup_open_ext(&back_saved);	
	
	sys_data_factroy_init();
	sys_data_set_factory_reset(TRUE);
	sys_data_set_cur_chan_mode(TV_CHAN);
	sys_data_save(TRUE);
	sys_data_load();

	chunk_id = STB_CHUNK_DEFAULT_DB_ID;
	api_get_chuck_addlen(chunk_id, &default_db_addr, &default_db_len);
	set_default_value(DEFAULT_ALL_PROG, default_db_addr + 16);
    
	reset_search_param(); /*reset the local static param in full_band_search*/
	if (GetMuteState())
		SetMuteOnOff(FALSE);
	if (GetPauseState())
		SetPauseOnOff(FALSE);
#if(defined(MIS_AD) || defined(MIS_AD_NEW))
	MIS_SetOSDAlpha(0x00);
#endif
#ifdef MULTI_CAS
#if (CAS_TYPE == CAS_DVN)
	ap_cas_set_messageID(0);
	cas_flags_reset();
#elif(CAS_TYPE==CAS_IRDETO)
	setFirstIn(1);
#elif (CAS_TYPE == CAS_CDCA)
	api_mcas_stop_transponder();
#endif				
#endif
	setMtxt(0);
	//win_compopup_smsg_restoreback();消除完成恢复出厂设置后出现的小黑框现象---#JingJin
	
	OSD_SetTextFieldContent(factory_msg_txt, STRING_ID, (UINT32)RS_FACTORY_DONE);
	OSD_DrawObject((POBJECT_HEAD)factory_msg_txt, C_UPDATE_ALL);
	
	OSD_SetTextFieldContent(factory_msg_txt, STRING_ID, (UINT32)RS_FACTORY_USER_SURE);

	OSD_SetMultiselSel(factory_multisel, 0);
	OSD_TrackObject((POBJECT_HEAD)factory_multisel, C_DRAW_TYPE_HIGHLIGHT);
	
	//老版本弹出恢复出厂信息
	//win_compopup_init(WIN_POPUP_TYPE_SMSG);
	//win_compopup_set_msg(NULL, NULL, RS_FACTORY_DONE);
	//win_compopup_open_ext(&back_saved);	
}