📄 configdlg.cpp.svn-base
字号:
configfile.Write(&config.power_off_gpio, sizeof(config.power_off_gpio));
configfile.Write(&config.init_usb, sizeof(config.init_usb));
configfile.Write(&config.init_usb_gpio_number, sizeof(config.init_usb_gpio_number));
configfile.Write(&config.init_usb_register, sizeof(config.init_usb_register));
configfile.Write(&config.init_usb_register_bit, sizeof(config.init_usb_register_bit));
configfile.Write(&config.nandflash_parameter_count, sizeof(config.nandflash_parameter_count));
for(i = 0; i < config.nandflash_parameter_count; i++)
{
configfile.Write(&config.nandflash_parameter[i].chip_id, sizeof(config.nandflash_parameter[i].chip_id));
configfile.Write(&config.nandflash_parameter[i].page_size, sizeof(config.nandflash_parameter[i].page_size));
configfile.Write(&config.nandflash_parameter[i].page_per_blk, sizeof(config.nandflash_parameter[i].page_per_blk));
configfile.Write(&config.nandflash_parameter[i].blk_num, sizeof(config.nandflash_parameter[i].blk_num));
configfile.Write(&config.nandflash_parameter[i].group_blk_num, sizeof(config.nandflash_parameter[i].group_blk_num));
configfile.Write(&config.nandflash_parameter[i].plane_blk_num, sizeof(config.nandflash_parameter[i].plane_blk_num));
configfile.Write(&config.nandflash_parameter[i].spare_size, sizeof(config.nandflash_parameter[i].spare_size));
configfile.Write(&config.nandflash_parameter[i].col_cycle, sizeof(config.nandflash_parameter[i].col_cycle));
configfile.Write(&config.nandflash_parameter[i].lst_col_mask, sizeof(config.nandflash_parameter[i].lst_col_mask));
configfile.Write(&config.nandflash_parameter[i].row_cycle, sizeof(config.nandflash_parameter[i].row_cycle));
configfile.Write(&config.nandflash_parameter[i].last_row_mask, sizeof(config.nandflash_parameter[i].lst_col_mask));
configfile.Write(&config.nandflash_parameter[i].custom_nd, sizeof(config.nandflash_parameter[i].custom_nd));
configfile.Write(&config.nandflash_parameter[i].flag, sizeof(config.nandflash_parameter[i].flag));
configfile.Write(&config.nandflash_parameter[i].cmd_len, sizeof(config.nandflash_parameter[i].cmd_len));
configfile.Write(&config.nandflash_parameter[i].data_len, sizeof(config.nandflash_parameter[i].data_len));
configfile.Write(&config.nandflash_parameter[i].des_str, 255);
}
configfile.Close();
for(i = 0; i < config.download_fat_image_count; i++)
{
config.total_download_file_len += (config.images[i].File_Size + FAT_IMAGE_SAFE_SIZE);
}
return count_downloadfile_size();
}
UINT hex2int(const char *str)
{
int i;
UINT number=0;
int order=1;
TCHAR ch;
for(i=lstrlen(str)-1;i>=0;i--)
{
ch=str[i];
if(ch=='x' || ch=='X')break;
if(ch>='0' && ch<='9')
{
number+=order*(ch-'0');
order*=16;
}
if(ch>='A' && ch<='F')
{
number+=order*(ch-'A'+10);
order*=16;
}
if(ch>='a' && ch<='f')
{
number+=order*(ch-'a'+10);
order*=16;
}
}
return number;
}
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConfigDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CConfigDlg)
//}}AFX_DATA_INIT
}
void CConfigDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CConfigDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
//{{AFX_MSG_MAP(CConfigDlg)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BUTTON_ENTER, OnButtonEnter)
ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)
ON_COMMAND(IDM_LOAD_NANDBOOT, OnLoadNandboot)
ON_COMMAND(IDM_LOAD_NORBOOT, OnLoadNorboot)
ON_COMMAND(IDM_CONFIG_HELP, OnConfigHelp)
ON_BN_CLICKED(IDC_BUTTON_BROWSE_FOLDER, OnButtonBrowseFolder)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CConfigDlg message handlers
BOOL CConfigDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_sheet.AddPage(&m_page1);
m_sheet.AddPage(&m_page2);
m_sheet.Create(this, WS_CHILD | WS_VISIBLE, WS_EX_CONTROLPARENT);
/*
CMenu *menu = GetMenu();
if(config.bNandBoot)
menu->CheckMenuItem(IDM_LOAD_NORBOOT, MF_BYCOMMAND | MF_UNCHECKED);
else
menu->CheckMenuItem(IDM_LOAD_NANDBOOT, MF_BYCOMMAND | MF_UNCHECKED);
*/
m_sheet.SetWindowPos(NULL, 10, 10, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
return TRUE;
}
void CConfigDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
/* Aug.06,07 - Added to validate the FS Format-Table when closing the setting dialog. */
if(CheckFormatData(0xFFFFFFFF) != 0)
{
int ret = MessageBox(_T("文件系统分区表有问题,是否仍然要返回到下载界面?"), NULL, MB_YESNO);
if(ret == IDNO)
{
return;
}
}
m_page1.init = FALSE;
m_page2.init = FALSE;
close_config();
/* Aug.06,07 - Change to ONOK which will store variables before close dialog. */
CDialog::OnOK();
}
BOOL CConfigDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
}
void CConfigDlg::OnButtonEnter()
{
// TODO: Add your control notification handler code here
if(m_page1.init)
{
bool ret = m_page1.Get_ConfigData();
if(!ret)
return;
// m_page1.init = FALSE;
}
if(m_page2.init)
{
bool ret = m_page2.Get_ConfigData();
if(!ret)
return;
// m_page2.init = FALSE;
}
OnClose();
// OnOK();
}
void CConfigDlg::OnButtonCancel()
{
// TODO: Add your control notification handler code here
OnCancel();
m_page1.init = FALSE;
m_page2.init = FALSE;
}
void CConfigDlg::SetConfigItem()
{
m_page1.SetConfigItem();
m_page2.SetConfigItem();
}
void CConfigDlg::OnLoadNandboot()
{
// TODO: Add your command handler code here
CMenu *menu = GetMenu();
menu->CheckMenuItem(IDM_LOAD_NANDBOOT, MF_BYCOMMAND | MF_CHECKED);
menu->CheckMenuItem(IDM_LOAD_NORBOOT, MF_BYCOMMAND | MF_UNCHECKED);
if( !open_config())
LoadDefaultCfg();
SetConfigItem();
}
void CConfigDlg::OnLoadNorboot()
{
// TODO: Add your command handler code here
CMenu *menu = GetMenu();
menu->CheckMenuItem(IDM_LOAD_NANDBOOT, MF_BYCOMMAND | MF_UNCHECKED);
menu->CheckMenuItem(IDM_LOAD_NORBOOT, MF_BYCOMMAND | MF_CHECKED);
if( !open_config())
LoadDefaultCfg();
SetConfigItem();
}
void CConfigDlg::OnConfigHelp()
{
// TODO: Add your command handler code here
ShellExecute(this->m_hWnd, NULL, ConverPathToAbsolute("readme.txt"), NULL, NULL, SW_SHOWNORMAL);
}
void CConfigDlg::OnButtonBrowseFolder()
{
// TODO: Add your control notification handler code here
extern HINSTANCE _hInstance;
BROWSEINFO pbi;
memset ( &pbi, 0, sizeof ( pbi ));
pbi.hwndOwner = GetSafeHwnd();
pbi.pidlRoot = NULL;
pbi.lpszTitle = __T("请选择资源树目录路径");
pbi.ulFlags = BIF_RETURNONLYFSDIRS ;
LPITEMIDLIST pidl;
if((pidl = SHBrowseForFolder (&pbi)) != NULL)
{
TCHAR path[MAX_PATH];
TCHAR *relative_path;
SHGetPathFromIDList ( pidl, path );
// free memory used
IMalloc * imalloc = 0;
if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )
{
imalloc->Free ( pidl );
imalloc->Release ( );
}
if((relative_path = strstr(path, Current_DirectoryBuffer)) != NULL)
{
relative_path = path + strlen(Current_DirectoryBuffer) + 1;
SetDlgItemText(IDC_EDIT_RESOURCE_PATH, relative_path);
}
else
SetDlgItemText(IDC_EDIT_RESOURCE_PATH, path);
}
}
int CheckFormatData(UINT total_size)
{
bool bFake = false;
UINT curFake_start = 0;
UINT curFake_end = 0;
UINT preDisk_end = 0;
if(config.format_count <= 0)
{
return 1;
}
for(int i = 0; i < config.format_count; i++)
{
if(config.formats[i].Start_Address > total_size)
{
return 1;
}
if(config.formats[i].ZoneType == ZT_FAKE)
{
bFake = true;
if(config.formats[i].Start_Address < curFake_end)
{
return 2;
}
curFake_start = config.formats[i].Start_Address;
curFake_end = config.formats[i].End_Address;
}
else
{
if(bFake)
{
if(config.formats[i].Start_Address < curFake_start)
{
return 3;
}
if(config.formats[i].End_Address > curFake_end)
{
return 4;
}
}
if(config.formats[i].Start_Address > config.formats[i].End_Address)
{
return 5;
}
if(config.formats[i].Start_Address < preDisk_end)
{
return 6;
}
preDisk_end = config.formats[i].End_Address;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -