void CDfuFileMgrDlgExtract::OnCancel() 
{
	if (m_hFile!=0)
		STDFUFILES_CloseDFUFile(m_hFile);
	
	CDialog::OnCancel();
}
Пример #2
0
void CDfuFileMgrDlg::OnButtongenerate() 
{
	HANDLE hFile;
	TCHAR szFilters[]=
    "Dfu Files (*.dfu)|*.dfu|All Files (*.*)|*.*||";
	WORD Vid, Pid, Bcd;

	CFileDialog* dlg;
	dlg = new CFileDialog(FALSE,  _T("dfu"), _T("*.dfu"),
					OFN_CREATEPROMPT |OFN_PATHMUSTEXIST |OFN_OVERWRITEPROMPT,
					szFilters, this);

	UpdateData(TRUE);

	if (m_Vid.IsEmpty() || m_Pid.IsEmpty() || m_Bcd.IsEmpty() )
	{
		AfxMessageBox("One of following element is empty. Please fill before continuing...\r\nVID, PID or Bcd Version"); 
		return;
	}
	else if(m_Images.GetSize() == 0)
	{
        AfxMessageBox("Image list is empty. Please select an S19, Hex or bin file"); 
		return;
	}
	if (dlg->DoModal()==IDOK)
	{
		char *dummy;
		Vid=(WORD)strtoul(m_Vid, &dummy, 16);
		Pid=(WORD)strtoul(m_Pid, &dummy, 16);
		Bcd=(WORD)strtoul(m_Bcd, &dummy, 16);

		if (STDFUFILES_CreateNewDFUFile((LPSTR)(LPCSTR)dlg->GetFileName(), &hFile, Vid, Pid, Bcd)==STDFUFILES_NOERROR)
		{
			for (int i=0;i<m_Images.GetSize();i++)
			{
				CString Tmp, Tmp1;
				HANDLE Image=(HANDLE)m_Images.GetAt(i);

				m_ListFiles.GetText(i, Tmp1);
				if (STDFUFILES_AppendImageToDFUFile(hFile, Image)==STDFUFILES_NOERROR)
				{
					Tmp.Format("Success for '%s' !",Tmp1);
					AfxMessageBox(Tmp);
				}
				else
				{
					Tmp.Format("Failure for '%s'...", Tmp1);
					AfxMessageBox(Tmp);
				}
			}
			STDFUFILES_CloseDFUFile(hFile);
		}
	}

	UpdateData(FALSE);
}
void CDfuFileMgrDlgExtract::OnButtonopen() 
{
	TCHAR szFilters[]=
    "Dfu Files (*.dfu)|*.dfu|All Files (*.*)|*.*||";

	char Path[MAX_PATH];
	char Tmp[MAX_PATH];
	char *pTmp;

	GetModuleFileName(NULL, Path, MAX_PATH);
	strrev(Path);
	pTmp = strchr(Path, '\\');
	strrev(pTmp);
	lstrcpy(Tmp, pTmp);
	lstrcpy(Path, Tmp);
	lstrcat(Path, "*.dfu");

	CFileDialog* dlg;
	dlg = new CFileDialog(TRUE, _T("dfu"), _T("*.dfu"), OFN_FILEMUSTEXIST, szFilters, this);

	UpdateData(TRUE);
	m_ListFiles.ResetContent();
	if (dlg->DoModal()==IDOK)
	{
		BYTE Alts;
		WORD Vid;
		WORD Pid;
		WORD Bcd;

		if (m_hFile!=0)
			STDFUFILES_CloseDFUFile(m_hFile);

		if (STDFUFILES_OpenExistingDFUFile((LPSTR)(LPCSTR)dlg->GetPathName(), &m_hFile, &Vid, &Pid, &Bcd, &Alts) == STDFUFILES_NOERROR)
		{
			BYTE Alt;
			CString Tmp, Tmp1;

			m_Pid.Format("%04X", Pid);
			m_Vid.Format("%04X", Vid);
			m_Bcd.Format("%04X", Bcd);
			m_FileBaseName=dlg->GetPathName().Left(dlg->GetPathName().GetLength()-4);
		    m_DfuFile = dlg->GetPathName(); 

			UpdateData(FALSE);
			for (BYTE i=0;i<Alts;i++)
			{
				HANDLE Image;
				CString Tmp;
				if (STDFUFILES_ReadImageFromDFUFile(m_hFile, i, &Image)==STDFUFILES_NOERROR)
				{
					char Name[512];

					STDFUFILES_GetImageAlternate(Image, &Alt);
					STDFUFILES_GetImageName(Image, Name);
					STDFUFILES_DestroyImage(&Image);

					Tmp.Format("Image for Target ID %02i", Alt);
					if (Name[0]!='\0')
					{
						Tmp+="  (";
						Tmp+=Name;
						Tmp+=")";
					}
					m_ListFiles.AddString(Tmp);
				}
				else
				{
					AfxMessageBox("Unable to read images in file...");
					break;
				}
				if(m_ListFiles.GetCount()>0)
				   m_ListFiles.SetCurSel(0);
			}
		}
		else
			AfxMessageBox("Error... Maybe bad or old file format");
	}
}