* 何らかの異常で通信を継続できないエラーが発生し、コネクションを維持できない時に発生します。\r
* このイベントが発生するとコネクションは閉じられれます。\r
* </li>\r
+ * <li>{function(v)} onDisposeObject\r
+ * disposeObject関数が完了したときに呼び出されます。\r
+ * vは削除に成功したかの真偽値です。\r
+ * </li>\r
+ * <li>{function(v)} onGetInfo\r
+ * onGetInfo関数が完了したときに呼び出されます。\r
+ * vは戻り値を格納した複合連想配列です。\r
+ * {version,platform,mcu:{name,eth},memory:{free}}\r
+ * </li>\r
* </ul>\r
* <p>\r
* Generatorを指定した場合、コールバック関数の戻り値はyiledの戻り値として取得できます。\r
* var mcu=new mbedJS.Mcu("192.168.128.39",\r
* {\r
* onNew:function(){\r
+ * mcu.getInfo();\r
+ * },\r
+ * onGetInfo:function(v){\r
+ * log("[PASS]onGetInfo:"+v.version+","+v.platform+","+v.mcu.name+","+v.mcu.eth+","+v.memory.free);\r
+ * var pin=new mbedJS.DigitalIn(mcu,mbedJS.PinName.P0_22,{\r
+ * onNew:function(){\r
+ * mcu.disposeObject(pin._oid);\r
+ * }});\r
+ * },\r
+ * onDisposeObject:function(v){\r
+ * mcu.close();\r
* },\r
* onClose:function(){\r
* },\r
* onError:function(){\r
+ * alert("Error");\r
* }\r
* });\r
* @example //Generator\r
}\r
CLASS.prototype=\r
{\r
+ RPC_NS:"mbedJS:Mcu",\r
_lc:null,\r
_rpc:null,\r
_gen:null,\r
* @function\r
*/\r
close:function MCU_close(){\r
- if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\r
+ MI._assertYield.call(this);\r
this._lc=CLASS.close;\r
this._rpc.close();\r
},\r
/**\r
* コールバック関数を全てキャンセルして、Mcuとの接続をシャットダウンします。\r
+ * この関数は即座に完了します。\r
* @name mbedJS.Mcu#shutdown\r
* @function\r
*/\r
/** @private */\r
addItem:function(o){\r
this._items.push(o);\r
- }\r
+ },\r
+ /**\r
+ * Mcuの情報を返します。\r
+ * @name mbedJS.Mcu#getInfo\r
+ * @function\r
+ * @return {HashMap}\r
+ * 情報を格納した連想配列です。\r
+ */\r
+ getInfo:function(){\r
+ try{\r
+ var _t=this;\r
+ MI._assertYield.call(_t);\r
+ var cb=MI._getCb(arguments,_t._event.onGetInfo);\r
+ _t._lc=CLASS.getInfo;\r
+ return _t.rpc(_t.RPC_NS+":getInfo","",\r
+ function (j)\r
+ {\r
+ var r=j.result;\r
+ var v={version:r[0],platform:r[1],mcu:{name:r[3],eth:r[2]},memory:{free:r[4]}};\r
+ if(cb){cb(v);}\r
+ if(_t._gen){_t._gen.next(v);}\r
+ _t._lc=null;\r
+ }\r
+ );\r
+ }catch(e){\r
+ throw new MI.MiMicException(e);\r
+ } \r
+ },\r
+ /**\r
+ * 指定idのオブジェクトをMCUのメモリから削除します。\r
+ * @name mbedJS.Mcu#disposeObject\r
+ * @function\r
+ * @param {int} i_oid\r
+ * オブジェクトID。\r
+ * mbedJSオブジェクトが所有するリモートオブジェクトのIDを指定します。\r
+ * @return {boolean}\r
+ * 結果を返します。\r
+ */\r
+ disposeObject:function(i_oid){\r
+ try{\r
+ var _t=this;\r
+ MI._assertYield.call(_t);\r
+ var cb=MI._getCb(arguments,_t._event.onDisposeObject);\r
+ _t._lc=CLASS.disposeObject;\r
+ return _t.rpc(_t.RPC_NS+":disposeObject",i_oid,\r
+ function (j)\r
+ {\r
+ var v=j.result[0]?true:false;\r
+ if(cb){cb(v);}\r
+ if(_t._gen){_t._gen.next(v);}\r
+ _t._lc=null;\r
+ }\r
+ );\r
+ }catch(e){\r
+ throw new MI.MiMicException(e);\r
+ } \r
+ },\r
+ /**\r
+ * 内部関数です.\r
+ * ペリフェラルクラスから_dispose.apply(this,arguments)でコールしてください。\r
+ * @private\r
+ */\r
+ _dispose:function(){\r
+ try{\r
+ var _t=this;\r
+ MI._assertYield.call(_t);\r
+ var cb=MI._getCb(arguments,_t._event.onDispose);\r
+ _t._lc=_t.dispose;//CLASS.disposeが使えないんでIDに関数そのものを使う\r
+ return _t._mcu.rpc(_t._mcu.RPC_NS+":disposeObject",_t._oid,\r
+ function (j)\r
+ {\r
+ var v=j.result[0]?true:false;\r
+ if(cb){cb(v);}\r
+ if(_t._gen){_t._gen.next(v);}\r
+ _t._lc=null;\r
+ }\r
+ );\r
+ }catch(e){\r
+ throw new MI.MiMicException(e);\r
+ } \r
+ } \r
+ \r
}\r
NS.Mcu=CLASS;\r
}());
\ No newline at end of file