OSDN Git Service

dispose関数の追加
[mimic/MiMicSDK.git] / misc / mbedJS / mbddJS.API / mbedJS / mbed.Mcu.js
index af20836..3e8f11f 100644 (file)
@@ -151,7 +151,7 @@ CLASS.prototype=
         * @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
@@ -201,17 +201,18 @@ CLASS.prototype=
        getInfo:function(){\r
                try{\r
                        var _t=this;\r
-                       if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\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(_t._event.onGetInfo){_t._event.onGetInfo(v);}\r
-                               if(_t._gen){_t._gen.next(v);}\r
-                                _t._lc=null;\r
-                       }\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
@@ -230,21 +231,47 @@ CLASS.prototype=
        disposeObject:function(i_oid){\r
                try{\r
                        var _t=this;\r
-                       if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\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(_t._event.onDisposeObject){_t._event.onDisposeObject(v);}\r
-                               if(_t._gen){_t._gen.next(v);}\r
-                                _t._lc=null;\r
-                       }\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