From: naruko Date: Sun, 17 Oct 2010 12:49:42 +0000 (+0000) Subject: flash memory device listup の対応を追加 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;ds=sidebyside;h=a699f5860846f331ad2cced902d227b672cf61c1;p=unagi%2Fold-svn-converted.git flash memory device listup の対応を追加 git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@368 24ea1065-a21e-4ca1-99c9-f5125deb0858 --- diff --git a/client/trunk/anago/anago_wxframe_main.cpp b/client/trunk/anago/anago_wxframe_main.cpp index 14d4786..9915c9a 100644 --- a/client/trunk/anago/anago_wxframe_main.cpp +++ b/client/trunk/anago/anago_wxframe_main.cpp @@ -1,7 +1,7 @@ -#include #include #include #include +#include "wx.h" #include "widget.h" #include "anago_wxframe_main.h" #include "reader_master.h" @@ -9,6 +9,7 @@ extern const struct reader_driver DRIVER_KAZZO; extern "C"{ #include "script_dump.h" +#include "flash_device.h" } static void value_set(void *gauge, int value) @@ -38,105 +39,175 @@ static void label_set(void *label, const char *str) l->SetLabel(str); } -anago_wxframe_main::anago_wxframe_main( wxWindow* parent ) - : frame_main( parent ) +static void choice_append(void *choice, const char *str) { + wxChoice *c = static_cast(choice); + c->Append(wxString(str)); +} - wxDir dir(wxGetCwd()); - wxString filename; - +class anago_wxframe_main : public frame_main +{ +private: + enum { + MODE_DUMP, MODE_PROGRAM + } m_mode; + void choise_script_init(wxString filespec) + { + wxDir dir(wxGetCwd()); + wxString filename; - if ( !dir.IsOpened() ){ - return; + m_choice_script->Clear(); + if ( !dir.IsOpened() ){ + return; + } + bool cont = dir.GetFirst(&filename, filespec, wxDIR_FILES); + while ( cont ){ + m_choice_script->Append(filename); + cont = dir.GetNext(&filename); + } + m_choice_script->Select(0); } - bool cont = dir.GetFirst(&filename, wxString("*.ad"), wxDIR_FILES); - while ( cont ){ - m_combo_script->Append(filename); - - cont = dir.GetNext(&filename); + void dump_form_init(void) + { + m_mode = MODE_DUMP; + this->choise_script_init(wxString("*.ad")); + m_check_battery->Show(); + m_check_forcemapper->Show(); + m_text_forcemapper->Show(); + m_button_execute->SetLabel(wxString("&Dump")); + m_choice_cpu_trans->Hide(); + m_choice_cpu_device->Hide(); + m_choice_ppu_trans->Hide(); + m_choice_ppu_device->Hide(); } - m_combo_script->Select(0); -} + void choise_trans_init(wxChoice *c) + { + c->Clear(); + c->Append(wxString("full")); + c->Append(wxString("empty")); + c->Append(wxString("top")); + c->Append(wxString("bottom")); + c->Select(0); + } + void program_form_init(void) + { + m_mode = MODE_PROGRAM; + this->choise_script_init(wxString("*.af")); + m_check_battery->Hide(); + m_check_forcemapper->Hide(); + m_text_forcemapper->Hide(); + m_button_execute->SetLabel(wxString("&Program")); + m_choice_cpu_trans->Show(); + m_choice_cpu_device->Show(); + m_choice_ppu_trans->Show(); + m_choice_ppu_device->Show(); + } + void dump_execute(void) + { + struct config_dump config; + config.gauge_cpu.bar = m_gauge_cpu; + config.gauge_cpu.label = m_label_cpu; + config.gauge_cpu.label_set = label_set; + config.gauge_cpu.range_set = range_set; + config.gauge_cpu.value_set = value_set; + + config.gauge_ppu.bar = m_gauge_ppu; + config.gauge_ppu.label = m_label_ppu; + config.gauge_ppu.label_set = label_set; + config.gauge_ppu.range_set = range_set; + config.gauge_ppu.value_set = value_set; + + config.log.object = m_log; + config.log.append = text_append; + config.increase.cpu = 1; + config.increase.ppu = 1; + config.progress = true; + wxString str_script = m_choice_script->GetStringSelection(); + config.script = str_script.fn_str(); + + { + wxString str; + config.mappernum = -1; + if(m_check_forcemapper->GetValue() == true){ + str = m_text_forcemapper->GetValue(); + if(str.ToLong(&config.mappernum) == false){ + *m_log << "bad mapper number\n"; + return; + } + } + } -void anago_wxframe_main::OnButtonClick(wxCommandEvent& event) -{ - struct config_dump config; - config.gauge_cpu.bar = m_gauge_cpu; - config.gauge_cpu.label = m_label_cpu; - config.gauge_cpu.label_set = label_set; - config.gauge_cpu.range_set = range_set; - config.gauge_cpu.value_set = value_set; - - config.gauge_ppu.bar = m_gauge_ppu; - config.gauge_ppu.label = m_label_ppu; - config.gauge_ppu.label_set = label_set; - config.gauge_ppu.range_set = range_set; - config.gauge_ppu.value_set = value_set; - - config.log.object = m_log; - config.log.append = text_append; - config.increase.cpu = 1; - config.increase.ppu = 1; - config.progress = true; - wxString str_script = m_combo_script->GetValue(); - config.script = str_script.fn_str(); + wxTextCtrl *text = m_picker_romimage->GetTextCtrl(); + wxString str_rom = text->GetValue(); + if(text->IsEmpty() == true){ + *m_log << "Enter filename to ROM image\n"; + return; + } + config.target = str_rom.fn_str(); - { - wxString str; - config.mappernum = -1; + config.reader = &DRIVER_KAZZO; + if(config.reader->open_or_close(READER_OPEN) == NG){ + *m_log << "reader open error\n"; + return; + } + m_choice_script->Disable(); + m_picker_romimage->Disable(); + m_check_battery->Disable(); + m_check_forcemapper->Disable(); + m_button_execute->Disable(); if(m_check_forcemapper->GetValue() == true){ - str = m_text_forcemapper->GetValue(); - if(str.ToLong(&config.mappernum) == false){ - *m_log << "bad mapper number\n"; - return; - } + m_text_forcemapper->Disable(); } - } - wxTextCtrl *text = m_picker_romimage->GetTextCtrl(); - wxString str_rom = text->GetValue(); - if(text->IsEmpty() == true){ - *m_log << "Enter filename to ROM image\n"; - return; - } - config.target = str_rom.fn_str(); + config.reader->init(); + script_dump_execute(&config); + config.reader->open_or_close(READER_CLOSE); - config.reader = &DRIVER_KAZZO; - if(config.reader->open_or_close(READER_OPEN) == NG){ - *m_log << "reader open error\n"; - return; + m_choice_script->Enable(); + m_picker_romimage->Enable(); + m_check_battery->Enable(); + m_check_forcemapper->Enable(); + m_button_execute->Enable(); + if(m_check_forcemapper->GetValue() == true){ + m_text_forcemapper->Enable(); + } } - m_combo_script->Disable(); - m_picker_romimage->Disable(); - m_check_battery->Disable(); - m_check_forcemapper->Disable(); - m_button_dump->Disable(); - if(m_check_forcemapper->GetValue() == true){ - m_text_forcemapper->Disable(); +protected: + // Handlers for frame_main events. + void OnButtonClick( wxCommandEvent& event ) + { + this->dump_execute(); } - config.reader->init(); - script_dump_execute(&config); - config.reader->open_or_close(READER_CLOSE); - - m_combo_script->Enable(); - m_picker_romimage->Enable(); - m_check_battery->Enable(); - m_check_forcemapper->Enable(); - m_button_dump->Enable(); - if(m_check_forcemapper->GetValue() == true){ - m_text_forcemapper->Enable(); + void mapper_change_check(wxCommandEvent& event) + { + if(m_check_forcemapper->GetValue() == true){ + m_text_forcemapper->Enable(); + }else{ + m_text_forcemapper->Disable(); + } } -} - -void anago_wxframe_main::mapper_change_check(wxCommandEvent& event) -{ - if(m_check_forcemapper->GetValue() == true){ - m_text_forcemapper->Enable(); - }else{ - m_text_forcemapper->Disable(); +public: + /** Constructor */ + anago_wxframe_main( wxWindow* parent ) : frame_main (parent) + { + //this->dump_form_init(); + this->program_form_init(); + this->choise_trans_init(m_choice_cpu_trans); + this->choise_trans_init(m_choice_ppu_trans); + + struct flash_listup list; + list.obj_cpu = m_choice_cpu_device; + list.obj_ppu = m_choice_ppu_device; + list.append = choice_append; + flash_device_listup(&list); + m_choice_cpu_device->Select(0); + m_choice_ppu_device->Select(0); } -} + +}; + + class MyApp : public wxApp { @@ -150,12 +221,5 @@ public: return true; } -/* int OnExit() - { - delete m_frame; - m_frame = NULL; - - return 0; - }*/ }; IMPLEMENT_APP(MyApp) diff --git a/client/trunk/anago/flash_device.c b/client/trunk/anago/flash_device.c index ce4c1dc..2246aea 100644 --- a/client/trunk/anago/flash_device.c +++ b/client/trunk/anago/flash_device.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -112,3 +113,71 @@ field_error: qr_close(v); return false; } + +static int flash_device_number_get(HSQUIRRELVM v) +{ + sq_pushroottable(v); + sq_pushstring(v, _SC("flash_device_number_get"), -1); + if(SQ_SUCCEEDED(sq_get(v,-2))){ + sq_pushroottable(v); + SQRESULT r = sq_call(v, 1, SQTrue, SQTrue); + assert(r == SQ_OK); + r++; + } + if(sq_gettype(v, -1) != OT_INTEGER){ + return 0; + } + SQInteger i; + if(SQ_FAILED(sq_getinteger(v, -1, &i))){ + return 0; + } + return i; +} + +static int flash_device_name_get(HSQUIRRELVM v, int index, const char **str) +{ + sq_pushroottable(v); + sq_pushstring(v, _SC("flash_device_name_get"), -1); + if(SQ_SUCCEEDED(sq_get(v,-2))){ + sq_pushroottable(v); + sq_pushinteger(v, index); + SQRESULT r = sq_call(v, 2, SQTrue, SQTrue); + assert(r == SQ_OK); + r++; + } + if(sq_gettype(v, -1) != OT_STRING){ + return 0; + } + if(SQ_FAILED(sq_getstring(v, -1, str))){ + return 0; + } + return 1; +} + +void flash_device_listup(struct flash_listup *t) +{ + const char *str; + HSQUIRRELVM v = qr_open(); + SQInteger top = sq_gettop(v); + + if(SQ_FAILED(sqstd_dofile(v, _SC("flashdevice.nut"), SQFalse, SQTrue))){ +// puts("flash device script error"); + qr_close(v); + } + + int i; + const int device_num = flash_device_number_get(v); + sq_settop(v, top); + + for(i = 0; i < device_num; i++){ + flash_device_name_get(v, i, &str); + if(strncmp(str, "dummy", 6) != 0){ + t->append(t->obj_cpu, str); + t->append(t->obj_ppu, str); + } + sq_settop(v, top); + } + + qr_close(v); + v = NULL; +} diff --git a/client/trunk/anago/flash_device.h b/client/trunk/anago/flash_device.h index ec54445..5861b9e 100644 --- a/client/trunk/anago/flash_device.h +++ b/client/trunk/anago/flash_device.h @@ -15,4 +15,10 @@ enum{ FLASH_ID_DEVICE_SRAM = 0xf0, FLASH_ID_DEVICE_DUMMY }; +//for GUI device listup +struct flash_listup{ + void *obj_cpu, *obj_ppu; + void (*append)(void *obj, const char *str); +}; +void flash_device_listup(struct flash_listup *t); #endif diff --git a/client/trunk/anago/flashdevice.nut b/client/trunk/anago/flashdevice.nut index 5e19362..4d347a4 100644 --- a/client/trunk/anago/flashdevice.nut +++ b/client/trunk/anago/flashdevice.nut @@ -4,84 +4,103 @@ function mask_get(bit) local t = 1 << (bit + 1); return t - 1; } +local mega = 0x20000; +local MASK_A14 = mask_get(14); +local MASK_A10 = mask_get(10); +device <- { + ["dummy"] = { + capacity = 16 * mega, pagesize = 1, + erase_wait = 0, erase_require = false, + retry = false, + id_manufacurer = 0xf1, id_device = 0xf1, + command_mask = 0 + }, + ["W29C020"] = { + capacity = 2 * mega, pagesize = 0x80, + erase_wait = 50, erase_require = false, + retry = false, + id_manufacurer = 0xda, id_device = 0x45, + command_mask = MASK_A14 + }, + ["W29C040"] = { + capacity = 4 * mega, pagesize = 0x100, + erase_wait = 50, erase_require = false, + retry = true, + id_manufacurer = 0xda, id_device = 0x46, + command_mask = MASK_A14 + }, + ["W49F002"] = { + capacity = 2 * mega, pagesize = 1, + erase_wait = 100, erase_require = true, + retry = false, + id_manufacurer = 0xda, id_device = 0xae, + command_mask = MASK_A14 + }, + ["AT49F002"] = { + capacity = 2 * mega, pagesize = 1, + erase_wait = 100, erase_require = true, + retry = true, + id_manufacurer = 0x1f, id_device = 0x08, + command_mask = MASK_A14 + }, + ["EN29F002T"] = { + capacity = 2 * mega, pagesize = 1, + erase_wait = 2000, erase_require = true, + retry = false, + id_manufacurer = 0x1c, id_device = 0x92, + command_mask = MASK_A14 + }, + ["AM29F040B"] = { + capacity = 4 * mega, pagesize = 1, + erase_wait = 8000, erase_require = true, + retry = false, + id_manufacurer = 0x01, id_device = 0xa4, + command_mask = MASK_A10 + }, + //command mask is not written in datasheet! + ["PM29F002T"] = { + capacity = 2 * mega, pagesize = 1, + erase_wait = 500, erase_require = true, + retry = false, + id_manufacurer = 0x9d, id_device = 0x1d, + command_mask = MASK_A10 //maybe A10-A0 + }, + //chip erase time is not written in datasheet!! + ["MBM29F080A"] = { + capacity = 8 * mega, pagesize = 1, + erase_wait = 8000, erase_require = true, + retry = false, + id_manufacurer = 0x04, id_device = 0xd5, + command_mask = MASK_A10 + }, + ["SST39SF040"] = { + capacity = 4 * mega, pagesize = 1, + erase_wait = 100, erase_require = true, + retry = false, + id_manufacurer = 0xbf, id_device = 0xb7, + command_mask = MASK_A14 + } +}; function flash_device_get(name) { - local mega = 0x20000; - local MASK_A14 = mask_get(14); - local MASK_A10 = mask_get(10); - local device = { - ["dummy"] = { - capacity = 16 * mega, pagesize = 1, - erase_wait = 0, erase_require = false, - retry = false, - id_manufacurer = 0xf1, id_device = 0xf1, - command_mask = 0 - }, - ["W29C020"] = { - capacity = 2 * mega, pagesize = 0x80, - erase_wait = 50, erase_require = false, - retry = false, - id_manufacurer = 0xda, id_device = 0x45, - command_mask = MASK_A14 - }, - ["W29C040"] = { - capacity = 4 * mega, pagesize = 0x100, - erase_wait = 50, erase_require = false, - retry = true, - id_manufacurer = 0xda, id_device = 0x46, - command_mask = MASK_A14 - }, - ["W49F002"] = { - capacity = 2 * mega, pagesize = 1, - erase_wait = 100, erase_require = true, - retry = false, - id_manufacurer = 0xda, id_device = 0xae, - command_mask = MASK_A14 - }, - ["AT49F002"] = { - capacity = 2 * mega, pagesize = 1, - erase_wait = 100, erase_require = true, - retry = true, - id_manufacurer = 0x1f, id_device = 0x08, - command_mask = MASK_A14 - }, - ["EN29F002T"] = { - capacity = 2 * mega, pagesize = 1, - erase_wait = 2000, erase_require = true, - retry = false, - id_manufacurer = 0x1c, id_device = 0x92, - command_mask = MASK_A14 - }, - ["AM29F040B"] = { - capacity = 4 * mega, pagesize = 1, - erase_wait = 8000, erase_require = true, - retry = false, - id_manufacurer = 0x01, id_device = 0xa4, - command_mask = MASK_A10 - }, - //command mask is not written in datasheet! - ["PM29F002T"] = { - capacity = 2 * mega, pagesize = 1, - erase_wait = 500, erase_require = true, - retry = false, - id_manufacurer = 0x9d, id_device = 0x1d, - command_mask = MASK_A10 //maybe A10-A0 - }, - //chip erase time is not written in datasheet!! - ["MBM29F080A"] = { - capacity = 8 * mega, pagesize = 1, - erase_wait = 8000, erase_require = true, - retry = false, - id_manufacurer = 0x04, id_device = 0xd5, - command_mask = MASK_A10 - }, - ["SST39SF040"] = { - capacity = 4 * mega, pagesize = 1, - erase_wait = 100, erase_require = true, - retry = false, - id_manufacurer = 0xbf, id_device = 0xb7, - command_mask = MASK_A14 - } - }; return device[name]; } + +//listup for GUI +//device table -> device name list array +{ + device_list<-[]; + foreach(v, i in device){ + device_list.append(v); + } + device_list.sort(); +} + +function flash_device_number_get() +{ + return device_list.len(); +} +function flash_device_name_get(i) +{ + return device_list[i]; +} diff --git a/client/trunk/anago/wx.fbp b/client/trunk/anago/wx.fbp index aa81d81..0935913 100644 --- a/client/trunk/anago/wx.fbp +++ b/client/trunk/anago/wx.fbp @@ -37,7 +37,7 @@ frame_main 32,32 - 360,360 + 380,360 wxDEFAULT_FRAME_STYLE anago wx @@ -158,9 +158,9 @@ 5 - wxEXPAND + wxALL|wxEXPAND 0 - + @@ -172,23 +172,22 @@ wxID_ANY - m_combo_script + m_choice_script protected + 0 - wxCB_DROPDOWN|wxCB_READONLY|wxCB_SORT wxFILTER_NONE wxDefaultValidator - - + @@ -210,8 +209,6 @@ - - @@ -333,7 +330,7 @@ 5 - wxEXPAND + wxEXPAND|wxALIGN_RIGHT 0 @@ -531,7 +528,7 @@ &dump - m_button_dump + m_button_execute protected @@ -575,58 +572,181 @@ 5 - wxALL + wxEXPAND 0 - - - - 1 - 1 - - - 0 - wxID_ANY - CPU - + - m_label_cpu - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - + bSizer6 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + CPU + + + m_label_cpu + protected + + 150,-1 + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + + + 1 + 1 + + + 0 + wxID_ANY + + 60,-1 + m_choice_cpu_trans + protected + + 0 + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + + + 1 + 1 + + + 0 + wxID_ANY + + + m_choice_cpu_device + protected + + 0 + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -687,58 +807,181 @@ 5 - wxALL + wxEXPAND 0 - - - - 1 - 1 - - - 0 - wxID_ANY - PPU - + - m_label_ppu - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - + bSizer7 + wxHORIZONTAL + none + + 5 + wxALL + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + PPU + + 150,-1 + m_label_ppu + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + + + 1 + 1 + + + 0 + wxID_ANY + + 60,-1 + m_choice_ppu_trans + protected + + 0 + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + + + 1 + 1 + + + 0 + wxID_ANY + + + m_choice_ppu_device + protected + + 0 + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +