OSDN Git Service

2.0.2
[mimic/MiMicSDK.git] / misc / mbedJS / mbddJS.API / mbedJS / mbed.Serial.js
index 0f6e0fb..84d1ed0 100644 (file)
@@ -14,8 +14,8 @@ var MI=MiMicJS;
  * インスタンスをバインドするMCUオブジェクトです。\r
  * @param {[PinName,PinName]} i_params\r
  * UARTを構成する2本のピンを指定します。tx,rxの順で設定します。\r
- * @param {HashMap|Generator} i_event\r
- * 非同期イベントハンドラの連想配列、又はGeneratorです。\r
+ * @param {HashMap|Generator|function} i_handler\r
+ * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。\r
  * <p>\r
  * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。\r
  * <ul>\r
@@ -70,7 +70,10 @@ var MI=MiMicJS;
  * </ul>\r
  * <p>\r
  * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。\r
+ * </p>\r
  * <p>\r
+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。\r
+ * </p>\r
  * @return {mbedJS.Serial}\r
  * @example //Callback\r
  * var mcu=new mbedJS.Mcu("192.168.128.39",\r
@@ -146,19 +149,21 @@ var CLASS=function Serial(i_mcu,i_params,i_handler)
 {\r
        try{\r
                var _t=this;\r
+               var cb;\r
                _t._mcu=i_mcu;\r
                _t._lc=CLASS;\r
-               if(MI.isGenerator(i_handler)){_t._gen=i_handler;}\r
-               else if(i_handler){_t._event=i_handler}\r
-               function cb(j)\r
-               {\r
-                       _t._oid=j.result[0];\r
-                       if(_t._event.onNew){_t._event.onNew();}\r
-                       if(_t._gen){_t._gen.next(_t);}\r
-                       _t._lc=null;\r
-               }\r
+               //ハンドラの初期化\r
+               var cb=MI._initHandler.call(_t,i_handler);\r
                MI.assertInt(i_params);         \r
-               _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1],cb);\r
+               _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1],\r
+                       function(j)\r
+                       {\r
+                               _t._oid=j.result[0];\r
+                               if(cb){cb();}\r
+                               if(_t._gen){_t._gen.next(_t);}\r
+                               _t._lc=null;\r
+                       }\r
+               );\r
        }catch(e){\r
                throw new MI.MiMicException(e);\r
        }       \r
@@ -218,17 +223,18 @@ CLASS.prototype=
        {\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.onFormat);\r
                        _t._lc=CLASS.format;\r
                        var p=[MI.isUndefined(i_bits,8),MI.isUndefined(i_parity,_t.Parity.None),MI.isUndefined(i_stop_bits,1)];\r
                        MI.assertInt(p);\r
                        return _t._mcu.rpc(_t.RPC_NS+":format",_t._oid+","+p[0]+","+p[1]+","+p[2],\r
-                       function (j)\r
-                       {\r
-                               if(_t._event.onFormat){_t._event.onFormat();}\r
-                               if(_t._gen){_t._gen.next();}\r
-                                _t._lc=null;\r
-                       }\r
+                               function (j)\r
+                               {\r
+                                       if(cb){cb();}\r
+                                       if(_t._gen){_t._gen.next();}\r
+                                        _t._lc=null;\r
+                               }\r
                        );\r
                }catch(e){\r
                        throw new MI.MiMicException(e);\r
@@ -249,16 +255,17 @@ CLASS.prototype=
        {\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.onReadable);\r
                        _t._lc=CLASS.readable;\r
                        return _t._mcu.rpc(_t.RPC_NS+":readable",_t._oid,\r
-                       function (j)\r
-                       {\r
-                               var v=j.result[0];\r
-                               if(_t._event.onReadable){_t._event.onReadable(v);}\r
-                               if(_t._gen){_t._gen.next(v);}\r
-                                _t._lc=null;\r
-                       }\r
+                               function (j)\r
+                               {\r
+                                       var v=j.result[0];\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
@@ -279,16 +286,17 @@ CLASS.prototype=
        {\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.onWriteable);\r
                        _t._lc=CLASS.writeable;                 \r
                        return _t._mcu.rpc(_t.RPC_NS+":writeable",_t._oid,\r
-                       function (j)\r
-                       {\r
-                               var v=j.result[0]?true:false;\r
-                               if(_t._event.onWriteable){_t._event.onWriteable(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
@@ -307,15 +315,16 @@ CLASS.prototype=
        {\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.onSend_break);\r
                        _t._lc=CLASS.send_break;\r
                        return _t._mcu.rpc(_t.RPC_NS+":send_break",_t._oid,\r
-                       function (j)\r
-                       {\r
-                               if(_t._event.onSend_break){_t._event.onSend_break();}\r
-                               if(_t._gen){_t._gen.next();}\r
-                                _t._lc=null;\r
-                       }\r
+                               function (j)\r
+                               {\r
+                                       if(cb){cb();}\r
+                                       if(_t._gen){_t._gen.next();}\r
+                                        _t._lc=null;\r
+                               }\r
                        );\r
                }catch(e){\r
                        throw new MI.MiMicException(e);\r
@@ -336,17 +345,18 @@ CLASS.prototype=
        {\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.onPutc);\r
                        _t._lc=CLASS.putc;\r
                        MI.assertInt(i_c);\r
                        return _t._mcu.rpc(_t.RPC_NS+":putc",_t._oid+","+i_c,\r
-                       function (j)\r
-                       {\r
-                               var v=j.result[0];\r
-                               if(_t._event.onPutc){_t._event.onPutc(v);}\r
-                               if(_t._gen){_t._gen.next(v);}\r
-                                _t._lc=null;\r
-                       }\r
+                               function (j)\r
+                               {\r
+                                       var v=j.result[0];\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
@@ -367,16 +377,17 @@ CLASS.prototype=
        {\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.onPuts);\r
                        _t._lc=CLASS.puts;\r
                        return _t._mcu.rpc(_t.RPC_NS+":puts",_t._oid+",\""+i_s+"\"",\r
-                       function (j)\r
-                       {\r
-                               var v=j.result[0];\r
-                               if(_t._event.onPuts){_t._event.onPuts(v);}\r
-                               if(_t._gen){_t._gen.next(v);}\r
-                                _t._lc=null;\r
-                       }\r
+                               function (j)\r
+                               {\r
+                                       var v=j.result[0];\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
@@ -397,16 +408,17 @@ CLASS.prototype=
        {\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.onGetc);\r
                        _t._lc=CLASS.getc;\r
                        return _t._mcu.rpc(_t.RPC_NS+":getc",_t._oid,\r
-                       function (j)\r
-                       {\r
-                               var v=j.result[0];\r
-                               if(_t._event.onGetc){_t._event.onGetc(v);}\r
-                               if(_t._gen){_t._gen.next(v);}\r
-                                _t._lc=null;\r
-                       }\r
+                               function (j)\r
+                               {\r
+                                       var v=j.result[0];\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
@@ -429,17 +441,18 @@ CLASS.prototype=
        {\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.onGets);\r
                        _t._lc=CLASS.gets;\r
                        MI.assertInt(i_len);                    \r
                        return _t._mcu.rpc(_t.RPC_NS+":gets",_t._oid+","+i_len,\r
-                       function (j)\r
-                       {\r
-                               var v=j.result[0];\r
-                               if(_t._event.onGets){_t._event.onGets(v);}\r
-                               if(_t._gen){_t._gen.next(v);}\r
-                                _t._lc=null;\r
-                       }\r
+                               function (j)\r
+                               {\r
+                                       var v=j.result[0];\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
@@ -460,16 +473,17 @@ CLASS.prototype=
        {\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.onBaud);\r
                        _t._lc=CLASS.baud;\r
                        MI.assertInt(i_baudrate);                       \r
                        return _t._mcu.rpc(_t.RPC_NS+":baud",_t._oid+","+i_baudrate,\r
-                       function (j)\r
-                       {\r
-                               if(_t._event.onBaud){_t._event.onBaud();}\r
-                               if(_t._gen){_t._gen.next();}\r
-                                _t._lc=null;\r
-                       }\r
+                               function (j)\r
+                               {\r
+                                       if(cb){cb();}\r
+                                       if(_t._gen){_t._gen.next();}\r
+                                        _t._lc=null;\r
+                               }\r
                        );\r
                }catch(e){\r
                        throw new MI.MiMicException(e);\r