OSDN Git Service

100,10,110等のipアドレスを正しく表示できなかった問題を修正
[mimic/MiMicSDK.git] / misc / mbedJS / mbddJS.API / mbedJS / mbed.Mcu.js
index 5890b2d..3e8f11f 100644 (file)
@@ -27,6 +27,15 @@ var MI=MiMicJS;
  * 何らかの異常で通信を継続できないエラーが発生し、コネクションを維持できない時に発生します。\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
@@ -36,10 +45,22 @@ var MI=MiMicJS;
  * 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
@@ -94,6 +115,7 @@ var CLASS=function Mcu(i_url,i_handler)
 }\r
 CLASS.prototype=\r
 {\r
+       RPC_NS:"mbedJS:Mcu",\r
        _lc:null,\r
        _rpc:null,\r
        _gen:null,\r
@@ -129,12 +151,13 @@ 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
        /**\r
         * コールバック関数を全てキャンセルして、Mcuとの接続をシャットダウンします。\r
+        * この関数は即座に完了します。\r
         * @name mbedJS.Mcu#shutdown\r
         * @function\r
         */\r
@@ -167,7 +190,88 @@ CLASS.prototype=
        /** @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