⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fucdapp.cpp

📁 atmel芯片的Linux驱动程序。很多802.11协议的无限网卡都使用该芯片
💻 CPP
字号:
#include "FucdApp.h"IMPLEMENT_APP( FucdApp )bool FucdApp::OnInit( ){	FucdFrame *frame = new FucdFrame(NULL, -1, _("Firmware Upgrade Configuration Dialog"));        FucdPanel *panel = new FucdPanel(frame, ID_PL_ONEPANEL);	SetExitOnFrameDelete(true);	frame->Show(true);	SetTopWindow(frame);	return true;}FucdFrame::FucdFrame(wxWindow* parent, wxWindowID id, const wxString &title)		: wxFrame(parent, id, title, wxDefaultPosition, wxSize(350,220)){	smf = new FucdLayer;	smf->FindDevices();	just4gg = new wxTimer(this, ID_TIMER);};FucdPanel::FucdPanel(wxWindow* parent, wxWindowID id) : wxPanel(parent, id){	// Create Box Sizers: 2 for buttons, 1 for the gauge, 1 for the text control and globs to rule them all!		wxBoxSizer *globs = new wxBoxSizer(wxVERTICAL);	wxBoxSizer *btbs1= new wxBoxSizer(wxHORIZONTAL);	wxBoxSizer *btbs2= new wxBoxSizer(wxHORIZONTAL);	wxBoxSizer *txtbs= new wxBoxSizer(wxHORIZONTAL);	wxBoxSizer *pgsbs= new wxBoxSizer(wxHORIZONTAL);	        wxButton *bt_rescan= new wxButton(this, ID_BT_RESCAN, _("Re-Scan")); 	btbs1->Add(bt_rescan, 0, wxALL | wxALIGN_BOTTOM, 15);        wxChoice *bt_select= new wxChoice(this, ID_CH_DEVICES, wxDefaultPosition, wxSize(191,24)); 	((FucdFrame*)parent)->GetLayer()->GetDevNames(bt_select);	bt_select->SetSelection(0);	btbs1->Add(bt_select, 0, wxALL | wxALIGN_BOTTOM, 15);	        wxButton *bt_exit= new wxButton(this, wxID_EXIT, _("E&xit")); 	btbs2->Add(bt_exit, 0, wxALL | wxALIGN_BOTTOM, 15);	        wxButton *bt_ok= new wxButton(this, ID_BT_FILE, _("Select File")); 	btbs2->Add(bt_ok, 0, wxALL| wxALIGN_BOTTOM, 15);        wxButton *bt_dload= new wxButton(this, ID_BT_DLOAD, _("Upgrade &FW")); 	bt_dload->Disable();	btbs2->Add(bt_dload, 0, wxALL| wxALIGN_BOTTOM, 15);	wxTextCtrl *txtctrl = new wxTextCtrl(this, ID_TXT_OSTREAM, _(""), wxDefaultPosition,		wxSize(200,200), wxTE_READONLY | wxTE_MULTILINE);	//Associate the stdout->wxTextCtrl redirector with a wxTextCtrl	//Stdout2TxtCtrl *mestdout = new Stdout2TxtCtrl("logger.txt", txtctrl);	//((FucdFrame*)parent)->SetFT(txtctrl);	//((FucdFrame*)parent)->SetOut(mestdout);	txtbs->Add(((FucdFrame*)parent)->GetFT(), 1, wxEXPAND | wxALL);		((FucdFrame*)parent)->SetGG(new wxGauge(this, ID_GG_DLOAD, GG_TOTAL));	pgsbs->Add(((FucdFrame*)parent)->GetGG(), 1, wxALL | wxALIGN_CENTER, 10);		globs->Add(txtbs, 2, wxEXPAND);	globs->Add(pgsbs, 1, wxEXPAND);	globs->Add(btbs1, 1, wxEXPAND);	globs->Add(btbs2, 1, wxEXPAND);	SetSizer(globs);	SetAutoLayout(true);	Layout();}BEGIN_EVENT_TABLE(FucdFrame, wxFrame)EVT_TIMER(ID_TIMER, FucdFrame::OnTimer)EVT_BUTTON(ID_BT_FILE, FucdFrame::OnBtFile)EVT_BUTTON(wxID_EXIT, FucdFrame::OnBtClose)EVT_BUTTON(ID_BT_DLOAD, FucdFrame::OnUpgradeFW)EVT_BUTTON(ID_BT_RESCAN, FucdFrame::OnRescan)EVT_CHOICE(ID_CH_DEVICES, FucdFrame::OnSelectDevice)EVT_IDLE(FucdFrame::OnIdle)EVT_CLOSE(FucdFrame::OnClose)END_EVENT_TABLE()void FucdFrame::OnRescan(){	wxChoice *devchoice = (wxChoice*)FindWindowById(ID_CH_DEVICES);	smf->FindDevices();	smf->GetDevNames(devchoice);	devchoice->SetSelection(0);	if(smf->GetActive() != -1 && *(smf->GetFw()) != NULL) FindWindowById(ID_BT_DLOAD)->Enable();}void FucdFrame::OnSelectDevice(wxCommandEvent &event){	event.Skip();	smf->SetActive( ((wxChoice*)FindWindowById(ID_CH_DEVICES))->GetSelection() );	if(smf->GetActive() != -1 && *(smf->GetFw()) != NULL) FindWindowById(ID_BT_DLOAD)->Enable();}void FucdFrame::OnUpgradeFW(){	wxString fw_ver;	gg_dload->SetValue(0);	// Initialize GG	smf->SetActive( ((wxChoice*)FindWindowById(ID_CH_DEVICES))->GetSelection() );	smf->Prepare();	smf->AtmelGetModeOfOperation();		if(!smf->AtmelGetFwVersion(fw_ver)) {	// FAILURE: exiting...		fucdtxt->AppendText(fw_ver);	// fw_ver used as an error logger		return;	}	fucdtxt->AppendText("Old Firmware Version: "+ fw_ver);		fucdtxt->SetDefaultStyle(wxTextAttr(*wxGREEN));	fucdtxt->AppendText("\nFirmware Download is Starting ...\n");	fucdtxt->SetDefaultStyle(wxTextAttr(*wxRED));	fucdtxt->AppendText("DO NOT, by all means, unplug your device until it's over!\n");	fucdtxt->SetDefaultStyle(wxTextAttr(*wxBLACK));	if(!smf->AtmelFirmwareUpgrade(gg_dload))			fucdtxt->AppendText("ATMEL - DFU: Non Flash Device ( EEPROM )- Aborting\n");	else if (!smf->AtmelGetModeOfOperation()) {		fucdtxt->AppendText("Life is Hard. Hardware is harder. Sorry...\n"); // Paei to device.	}	else {		fucdtxt->SetDefaultStyle(wxTextAttr(*wxGREEN));		fucdtxt->AppendText("Firmware Upgrade Completed Successfully!\n"); 		fucdtxt->SetDefaultStyle(wxTextAttr(*wxBLACK));		smf->AtmelGetFwVersion(fw_ver);		fucdtxt->AppendText("New Firmware Version: " + fw_ver);	}	gg_dload->SetValue(gg_dload->GetRange()); // Set GG to Max Value even if not reached yet.	// Finalize procedure	smf->Close();	FindWindowById(ID_BT_DLOAD)->Disable();}void FucdFrame::OnTimer(wxTimerEvent &event){	if(gg_dload->GetValue() < gg_dload->GetRange())		gg_dload->SetValue(gg_dload->GetValue()+4);}void FucdFrame::OnClose(wxCloseEvent &event){	just4gg->Stop();	Show(false);	event.Skip();	return;}void FucdFrame::OnBtClose(wxCommandEvent &event){       Close();       return;}void FucdFrame::OnBtFile(){        wxString filename, fullpath;	wxFileDialog fwfd(this, _("Choose a firmware image"), wxT("../"), wxT(""), 		wxT("Firmware Images|*.rom"), wxOPEN);	fwfd.ShowModal();	filename = fwfd.GetFilename();	fullpath = fwfd.GetPath();	if(filename != "") {		fucdtxt->SetDefaultStyle(wxTextAttr(*wxBLACK));		fucdtxt->AppendText("Selected file: ");		fucdtxt->SetDefaultStyle(wxTextAttr(*wxGREEN));		fucdtxt->AppendText(filename + "\n");		fucdtxt->SetDefaultStyle(wxTextAttr(*wxBLACK));		smf->SetFilename(fullpath);		if(smf->ReadFirmware()) {			fucdtxt->AppendText("Firmware File Loaded Succesfully ");			fucdtxt->AppendText(wxString::Format("(Size = %d)\n", smf->GetFwSize()));			//fucdtxt->AppendText(wxString::Format("%x, %x", smf->GetFw(), *(smf->GetFw())));			if(smf->GetActive() != -1)				FindWindowById(ID_BT_DLOAD)->Enable();		}		else	{			fucdtxt->AppendText(filename + " has improper size (>64k) \n");			FindWindowById(ID_BT_DLOAD)->Disable();			}	}	return;}void FucdFrame::OnIdle(wxIdleEvent &event){	event.Skip();}/*Stdout2TxtCtrl::Stdout2TxtCtrl(const char* filename, wxTextCtrl *txtctrl) {	logfile = freopen(filename, "w+t", ::stdout);	mystdout = txtctrl;	readpos = 0;};Stdout2TxtCtrl::~Stdout2TxtCtrl(){	fclose(logfile);}bool Stdout2TxtCtrl::Echo(){	buff[0] = 0;	fseek(logfile, readpos, SEEK_SET);	fgets(buff, 255, logfile);	readpos = ftell(logfile);	if(buff[0]) {		mystdout->AppendText(buff);		return true;	} else return false;}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -