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); }
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; }
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; }
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 }
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; }
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); }