--- /dev/null
+<html>\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\r
+<script src="./slib.js"></script>\r
+<link href="./mimic.css" rel="stylesheet" type="text/css" />\r
+<link rel="stylesheet" href="./c/codemirror-mini.css">\r
+<script src="./m/MiMicCore-mini.js"></script>\r
+<script src="./m/MbedM3.All-mini.js"></script>\r
+<script src="./c/codemirror-mini.js"></script>\r
+\r
+<style id="user-style-nyatla-bg-img">\r
+ body{\r
+ width:95%;\r
+ height:95%;\r
+ }\r
+ textarea {\r
+ font:inherit;\r
+ min-width:100%;\r
+ max-width:100%;\r
+ overflow-y:auto;\r
+ resize:none;\r
+ }\r
+ hr{\r
+ height:1px;\r
+ color:black;\r
+ }\r
+ #src{\r
+ height:320px;\r
+ background-color:#ffffff;\r
+ border:solid 1px;\r
+ }\r
+ button{\r
+ font-weight:bold;\r
+ text-align:center;\r
+ font-size:12px;\r
+ padding:0px;\r
+ }\r
+ #menu2_dump{\r
+ width:50px;height:40px;\r
+ }\r
+ #connect_menu_address{\r
+ border:solid 1px #aaaaaa;\r
+ width:200px;\r
+ }\r
+ .tag{\r
+ background-color:#4169E1;\r
+ color:white;\r
+ font-weight:bold;\r
+ padding:0px 1px 1px 3px;\r
+ }\r
+ input{\r
+ background-color:white;\r
+ color:black;\r
+ border:solid 1px #aaaaaa;\r
+ }\r
+ .td1{\r
+ background-color:#4169E1;\r
+ color:white;\r
+ font-weight:bold;\r
+ font-weight:bold;\r
+ font-size:12px;\r
+ width:120px;\r
+ }\r
+</style>\r
+<script type="text/javascript">\r
+\r
+var app;\r
+function getElem(id){return document.getElementById(id);}\r
+\r
+var Mui=new Object();\r
+\r
+\r
+Mui.ConnectionCtrl=function(id)\r
+{\r
+ var _t=this;\r
+ //member variables\r
+ _t._tags={\r
+ input:getElem(id+"_address")\r
+ };\r
+ //initialize\r
+ _t.getAddressText=function(){\r
+ return _t._tags.input.value;\r
+ }\r
+ _t.setAddressText=function(v){\r
+ _t._tags.input.value=v;\r
+ }\r
+}\r
+\r
+\r
+Mui.CodeEditor=function(id)\r
+{\r
+ var _t=this;\r
+ _t._tags={text:getElem(id)};\r
+ _t._cm=CodeMirror.fromTextArea(_t._tags.text,{\r
+ mode: "text/plain",\r
+ styleActiveLine: true,\r
+ lineNumbers: true,\r
+ lineWrapping:true,\r
+ readOnly:true});\r
+ _t.selectall=function(){\r
+ var e=this._cm;\r
+ e.setSelection({line:0,ch:0},{line:e.lineCount(),ch:0});\r
+ }\r
+ _t.getText=function(){\r
+ return this._cm.getValue();\r
+ }\r
+ _t.setText=function(v){\r
+ this._cm.setValue(v);\r
+ }\r
+}\r
+\r
+Mui.Command=function(id)\r
+{\r
+ var _t=this;\r
+ _t.CM_DUMP =1;\r
+ _t._tags={\r
+ dump:getElem(id+"_dump"),\r
+ }\r
+ _t.events={\r
+ onCommand:null\r
+ }\r
+ _t._tags.dump.onclick=function(){_t._onCommand(_t.CM_DUMP);};\r
+ _t._onCommand=function(eid){\r
+ if(_t.events.onCommand!=null){\r
+ _t.events.onCommand(eid);\r
+ }\r
+ }\r
+ _t._tags.dump.disabled=false;\r
+ _t.setEnabled=function(b)\r
+ {\r
+ _t._tags.dump.disabled=!b;\r
+ }\r
+}\r
+\r
+function Application()\r
+{\r
+ var _t=this;\r
+ //initialization\r
+ var ui={\r
+ connect:new Mui.ConnectionCtrl("connect_menu"),\r
+ source:new Mui.CodeEditor("src"),\r
+ cmd:new Mui.Command("menu2")\r
+ }\r
+ _t.VERSION="1.0.0"\r
+ _t.ui=ui;\r
+ ui.connect.setAddressText(location.host);\r
+ \r
+ var mif=null;\r
+ ui.cmd.events.onCommand=function(id)\r
+ {\r
+ function getInt(a)\r
+ {\r
+ var b=slib.strtrim(a);\r
+ //\8f\91\8e®\83`\83F\83b\83N\r
+ if(!b.match(/^0x[0-9a-f]+$|^[0-9]+$/i)){\r
+ return false;\r
+ }\r
+ var n=parseInt(b);\r
+ if(isNaN(n))\r
+ {\r
+ return false;\r
+ }\r
+ return n;\r
+ }\r
+ function dump(ad,bs,cb)\r
+ {\r
+ var v=\r
+ "Memory dump result:\nstart address: 0x"+MiMicLib.hexout(ad,8)+" "+bs+"blocks("+(bs*4)+"byte)\n"+\r
+ "----------\n";\r
+ var i=bs,mcu,ma;\r
+ var SB=16;\r
+ function loop()\r
+ {\r
+ try{\r
+ if(i%SB!=0){\r
+ var rd=ma.read32(ad,bs%SB*4);\r
+ for(var i2=0;i2<bs%SB;i2++,ad+=4){\r
+ v+="0x"+MiMicLib.hexout(ad,8)+": 0x"+MiMicLib.hexout(rd[i2],8)+"\n"\r
+ }\r
+ i-=bs%SB;\r
+ }else{\r
+ var rd=ma.read32(ad,SB*4);\r
+ for(var i2=0;i2<SB;i2++,ad+=4){\r
+ v+="0x"+MiMicLib.hexout(ad,8)+": 0x"+MiMicLib.hexout(rd[i2],8)+"\n"\r
+ }\r
+ i-=SB;\r
+ }\r
+ if(i>0){\r
+ ui.source.setText("Reading Memory...\n"+((bs-i)*4)+"/"+(bs*4)+"byte");\r
+ setTimeout(loop,0);\r
+ }else{\r
+ mcu.deactivate();\r
+ ui.source.setText(v);\r
+ cb();\r
+ }\r
+ }catch(e){\r
+ mcu.deactivate();\r
+ alert("An error occurred while retrieving memory.\n"+e);\r
+ ui.source.setText("ERROR.");\r
+ }\r
+ }\r
+ try{\r
+ mcu=new MbedM3.Mcu(ui.connect.getAddressText());\r
+ try{\r
+ ma=new MbedM3.Memory(mcu);\r
+ ui.source.setText("Reading memory block...");\r
+ setTimeout(loop,10);\r
+ }catch(e){\r
+ mcu.deactivate();\r
+ alert("Error[1]: "+ui.connect.getAddressText()+"\n"+e);\r
+ }\r
+ }catch(e){\r
+ alert("Can not connect to MiMicRemoteMCU.\nAddress: "+ui.connect.getAddressText()+"\n"+e);\r
+ ui.source.setText("ERROR.");\r
+ }\r
+ }\r
+\r
+ switch(id){\r
+ case ui.cmd.CM_DUMP:\r
+ var addr=ui.connect.getAddressText();\r
+ if(addr.length==0){\r
+ alert("Failed! No input MCU adderss.");\r
+ return;\r
+ }\r
+ var ad=getInt(getElem("in_memaddr").value);\r
+ var bs=getInt(getElem("in_block").value);\r
+ if(ad===false || ad%4!=0){\r
+ alert("Memory address must be unsigned integer of 32bit alignment.");\r
+ return;\r
+ }\r
+ if(bs===false){\r
+ alert("Number of blocks must be unsigned integer.");\r
+ return;\r
+ }\r
+ ui.cmd.setEnabled(false);\r
+ dump(ad,bs,function(){ui.cmd.setEnabled(true);});\r
+ return;\r
+ default:\r
+ alert("unknown command id");\r
+ }\r
+ }\r
+}\r
+function init()\r
+{\r
+ app=new Application();\r
+}\r
+\r
+</script>\r
+</head>\r
+<body onload="init();">\r
+<h1 style="float:left;"><img src="./mimiclogo.png"/><span id="idx" >MemoryDump</span></h1>\r
+<div style="float:right;" ><a href="/">Return to top</a></div>\r
+<hr style="clear:both;" />\r
+<div id="menu2">\r
+ <button id="menu2_dump" style="float:left"/>Dump</button>\r
+ <table class="table" style="float:left">\r
+ <tr class="input_row">\r
+ <td class="td1">Memory address</td><td><input id="in_memaddr" type="text" value="0x20080000"/></td>\r
+ </tr>\r
+ <tr class="input_row"><td class="td1">Number of blocks</td><td><input id="in_block" type="text" value="1"/></td></tr>\r
+ </table>\r
+ \r
+ <div id="connect_menu" style="float:right">\r
+ MCU Address:<input id="connect_menu_address" type="text"></input>\r
+ </div>\r
+</div>\r
+<div class="tag" style="clear:both">Dump Result</div>\r
+ <textarea id="src"></textarea>\r
+</div>\r
+<div class="footer">\r
+ MiMic project<br/>Copyright (C) 2011-2013 <a href="http://nyatla.jp">nyatla.jp</a> All Rights Reserved.\r
+</div>\r
+</body>\r
+</html>\r