From: nyatla Date: Thu, 10 Jul 2014 09:16:07 +0000 (+0000) Subject: 2.0.2 X-Git-Tag: SVN-final~5 X-Git-Url: http://git.osdn.net/view?p=mimic%2FMiMicSDK.git;a=commitdiff_plain;h=f1a34aabf691ea938759c784f65055b4374feac3 2.0.2 ペリフェラルクラスのコールバック引数対応。 MCUは未実施 git-svn-id: http://svn.osdn.jp/svnroot/mimic/trunk@384 47198e57-cb75-475f-84c4-a814cd6f29e0 --- diff --git a/misc/mbedJS/mbddJS.API/mbedJS/MiMicCore.js b/misc/mbedJS/mbddJS.API/mbedJS/MiMicCore.js index dd413c1..817860c 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/MiMicCore.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/MiMicCore.js @@ -13,7 +13,7 @@ var MiMicJS={}; * MiMicJsAPIのバージョン文字列。 * @name MiMicJS#VERSION */ - NS.VERSION="MiMicJsAPI/2.0.1"; + NS.VERSION="MiMicJsAPI/2.0.2"; /** * 配列要素、又は値がすべてInt値でない場合に例外を起こします。 * @name MiMicJS.assertInt @@ -76,8 +76,8 @@ var MiMicJS={}; }; /** - * @private * オブジェクトがジェネレータクラスであるかを返します。 + * @private */ NS.isGenerator=function isGenerator(o) { @@ -85,6 +85,13 @@ var MiMicJS={}; return o.toString().indexOf('Generator')!=-1; }; /** + * オブジェクトが関数であるかを返します。 + * @private + */ + NS.isFunction=function isFunction(o){ + return (typeof o == 'function'); + } + /** * @private * 現在の時刻を返します。 */ @@ -247,8 +254,70 @@ var MiMicJS={}; window[key]=v[key]; } } + /** + * MiMicSDK向けの内部関数です。 + * 末尾引数が関数の場合にはその関数を、異なる場合はi_cbを返却します。 + * @private + * @param i_arg + * 引数配列を指定します。 + * @param i_default_cb + * 引数配列に関数がなかった場合に返す値を指定します。 + */ + NS._getCb=function _getCb(i_arg,i_default_cb) + { + if(i_arg.length==0){ + return i_default_cb; + } + return NS.isFunction(i_arg[i_arg.length-1])?i_arg[i_arg.length-1]:i_default_cb; + } + /** + * MiMicSDK向けの関数です。 + * 末尾の拡張変数を取り除いたarguments引数の数を返します。 + * @private + */ + NS._getBaseArgsLen=function _getBaseArgsLen(i_arg) + { + if(i_arg.length==0 || (!NS.isFunction(i_arg[i_arg.length-1]))){ + return i_arg.length; + } + return i_arg.length==1?0:i_arg.length-1; + } + + /** + * MiMicSDK向けの関数です。 + * インスタンスがyieldコール可能かをチェックし、可能ならコール関数を記録します。 + * 関数は、インスタンスの_gen,_lcをチェックして、yieldが不可能な場合に例外を発生します。 + * _assertYield.call(this)でコールして下さい。 + * @private + */ + NS._assertYield=function _assertYield() + { + if(this._gen && this._lc){ + throw new NS.MiMicException(NS.Error.NG_YIELD_NOT_COMPLETED); + } + } + /** + * MiMicSDK向けの関数です。コンストラクタでイベントハンドラをセットアップする定型処理です。 + * i_handlerにセットされたオブジェクトに従って_gen,_eventメンバをセットします。 + * _initHandler.call(this,i_handler)でコールして下さい。 + * @private + */ + NS._initHandler=function _initHandler(i_handler) + { + if(NS.isGenerator(i_handler)){ + this._gen=i_handler; + }else if(NS.isFunction(i_handler)){ + return i_handler; + }else if(i_handler){ + this._event=i_handler; + return i_handler.onNew; + } + return null; + } + + }()); - + (function(){ var NS=MiMicJS; @@ -542,7 +611,7 @@ var MiMicJS={}; rx+='})'; rxst=0; { - log(rx);//Debug +// log(rx);//Debug //JSONがたぶん確定 var j=eval(rx); for(var i2=q.length-1;i2>=0;i2--){ @@ -611,7 +680,7 @@ var MiMicJS={}; sendMethod:function callJsonRpc(i_method,i_params,i_callback) { var v="{\"jsonrpc\":\"2.0\",\"method\":\""+i_method+"\",\"params\":["+i_params+"],\"id\":"+this._method_id+"}"; - log(v);//Debug +// log(v);//Debug this._ws.send(v); this._q.push([this._method_id,i_callback]);//キューに記録 this._method_id=(this._method_id+1)&0x0fffffff;//IDインクリメント diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.AnalogIn.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.AnalogIn.js index ba4716e..3e87f8a 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.AnalogIn.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.AnalogIn.js @@ -14,8 +14,8 @@ var MI=MiMicJS; * インスタンスをバインドするMCUオブジェクトです。 * @param {PinName} i_params * ピンIDを指定します。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.AnalogIn} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -79,17 +82,17 @@ var CLASS=function AnalogIn(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + var cb=MI._initHandler.call(_t,i_handler); MI.assertInt(i_params); - return _t._mcu.rpc(_t.RPC_NS+":_new1",i_params,cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",i_params, + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -136,16 +139,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; return _t._mcu.rpc(_t.RPC_NS+":read_fx",_t._oid, - function (j) - { - var v=j.result[0]/10000; - if(_t._event.onRead){_t._event.onRead(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]/10000; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -166,16 +170,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead_u16); + MI._assertYield.call(_t); _t._lc=CLASS.read_u16; return _t._mcu.rpc(_t.RPC_NS+":read_u16",_t._oid, - function (j) - { - var v=j.result[0]; - if(_t._event.onRead_u16){_t._event.onRead_u16(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.AnalogOut.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.AnalogOut.js index e0a28be..c207e72 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.AnalogOut.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.AnalogOut.js @@ -14,8 +14,8 @@ var MI=MiMicJS; * インスタンスをバインドするMCUオブジェクトです。 * @param {PinName} i_params * ピンIDを指定します。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.AnalogOut} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -89,17 +92,17 @@ var CLASS=function AnalogOut(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + var cb=MI._initHandler.call(_t,i_handler); MI.assertInt(i_params); - return _t._mcu.rpc(_t.RPC_NS+":_new1",i_params,cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",i_params, + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -146,15 +149,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onWrite); + MI._assertYield.call(_t); _t._lc=CLASS.write; MI.assertNumber(i_value); return _t._mcu.rpc(_t.RPC_NS+":write_fx",_t._oid+","+Math.round(i_value*10000), - function(j){ - if(_t._event.onWrite){_t._event.onWrite();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - }); + function(j){ + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -174,15 +179,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onWrite_u16); + MI._assertYield.call(_t); _t._lc=CLASS.write; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":write_fx",_t._oid+","+i_value, - function(j){ - if(_t._event.onWrite_u16){_t._event.onWrite_u16();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - }); + function(j){ + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -202,16 +209,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; return _t._mcu.rpc(_t.RPC_NS+":read_fx",_t._oid, - function (j) - { - var v=j.result[0]/10000; - if(_t._event.onRead){_t._event.onRead(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]/10000; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.BusIn.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.BusIn.js index 4514f2b..5eb189e 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.BusIn.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.BusIn.js @@ -14,8 +14,8 @@ var MI=MiMicJS; * インスタンスをバインドするMCUオブジェクトです。 * @param {[PinName...]} i_params * ピンIDの配列を指定します。要素数の最大値は16です。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.BusIn} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -78,15 +81,7 @@ var CLASS=function BusIn(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + var cb=MI._initHandler.call(_t,i_handler); //Pin配列の正規化 var ap=i_params; if(ap.length<1 ||ap.length>16){ @@ -102,7 +97,15 @@ var CLASS=function BusIn(i_mcu,i_params,i_handler) for(;i<16;i++){ pins+=","+NS.PinName.NC; } - return _t._mcu.rpc(_t.RPC_NS+":_new1",pins,cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",pins, + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -149,16 +152,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid, - function (j) - { - var v=j.result[0]; - if(_t._event.onRead){_t._event.onRead(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -179,17 +183,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} - _t._lc=CLASS.mode; + var cb=MI._getCb(arguments,_t._event.onMode); + MI._assertYield.call(_t); MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":mode",_t._oid+","+i_value, - function (j) - { - var v=j.result[0]; - if(_t._event.onMode){_t._event.onMode(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.BusInOut.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.BusInOut.js index c146af9..3acdf39 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.BusInOut.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.BusInOut.js @@ -14,8 +14,8 @@ var MI=MiMicJS; * インスタンスをバインドするMCUオブジェクトです。 * @param {[PinName...]} i_params * ピンIDの配列を指定します。要素数の最大値は16です。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.DigitalOut} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -95,12 +98,11 @@ var CLASS=function DigitalOut(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) + var cb=MI._initHandler.call(_t,i_handler); + function rcb(j) { _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} + if(cb){cb();} if(_t._gen){_t._gen.next(_t);} _t._lc=null; } @@ -116,9 +118,9 @@ var CLASS=function DigitalOut(i_mcu,i_params,i_handler) MI.assertInt(pr[0]); if(pr[1]){ MI.assertInt(pr[1]); - return _t._mcu.rpc(_t.RPC_NS+":_new2",pr[0]+","+pr[1],cb); + _t._mcu.rpc(_t.RPC_NS+":_new2",pr[0]+","+pr[1],rcb); }else{ - return _t._mcu.rpc(_t.RPC_NS+":_new1",pr[0],cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",pr[0],rcb); } }catch(e){ throw new MI.MiMicException(e); @@ -165,12 +167,13 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onWrite); + MI._assertYield.call(_t); _t._lc=CLASS.write; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":write",_t._oid+","+i_value, function(j){ - if(_t._event.onWrite){_t._event.onWrite();} + if(cb){cb();} if(_t._gen){_t._gen.next();} _t._lc=null; }); @@ -193,13 +196,14 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid, function (j) { var v=j.result[0]; - if(_t._event.onRead){_t._event.onRead(v);} + if(cb){cb(v);} if(_t._gen){_t._gen.next(v);} _t._lc=null; } diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.I2C.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.I2C.js index 39ce756..0d7dd37 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.I2C.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.I2C.js @@ -14,8 +14,8 @@ var MI=MiMicJS; * インスタンスをバインドするMCUオブジェクトです。 * @param {[PinName,PinName]} i_params * i2Cバスを構成するピンIDを指定します。sda,sclの順番です。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.I2C} * @example //Callback * var st=0; @@ -126,17 +129,17 @@ var CLASS=function I2C(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + var cb=MI._initHandler.call(_t,i_handler); MI.assertInt(i_params); - return _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1],cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1], + function (j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -183,16 +186,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onFrequency); + MI._assertYield.call(_t); _t._lc=CLASS.frequency; MI.assertInt(i_hz); return _t._mcu.rpc(_t.RPC_NS+":frequency",_t._oid+","+i_hz, - function (j) - { - if(_t._event.onFrequency){_t._event.onFrequency();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -243,21 +247,23 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; - function cb(j){ + function rcb(j){ var v=j.result.length>1?{ret:j.result[0],data:MI.bstr2byteArray(j.result[1])}:j.result[0]; - if(_t._event.onRead){_t._event.onRead(v);} + if(cb){cb(v);} if(_t._gen){_t._gen.next(v);} _t._lc=null; } - if(arguments.length==1){ + //ベース引数の数で処理の切り替え + if(MI._getBaseArgsLen(arguments)==1){ MI.assertInt(arguments[0]); - return _t._mcu.rpc(_t.RPC_NS+":read2",_t._oid+","+arguments[0],cb); + return _t._mcu.rpc(_t.RPC_NS+":read2",_t._oid+","+arguments[0],rcb); }else{ var a=arguments; MI.assertInt([a[0],a[1]]); - return _t._mcu.rpc(_t.RPC_NS+":read1",_t._oid+","+a[0]+","+a[1]+","+(a[2]?1:0),cb); + return _t._mcu.rpc(_t.RPC_NS+":read1",_t._oid+","+a[0]+","+a[1]+","+(a[2]?1:0),rcb); } }catch(e){ throw new MI.MiMicException(e); @@ -303,21 +309,22 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onWrite); + MI._assertYield.call(_t); _t._lc=CLASS.write; - function cb(j){ + function rcb(j){ var v=j.result[0]; - if(_t._event.onWrite){_t._event.onWrite(v);} + if(cb){cb(v);} if(_t._gen){_t._gen.next(v);} _t._lc=null; } - if(arguments.length==1){ + if(MI._getBaseArgsLen(arguments)==1){ MI.assertInt(arguments[0]); - return _t._mcu.rpc(_t.RPC_NS+":write2",_t._oid+","+arguments[0],cb); + return _t._mcu.rpc(_t.RPC_NS+":write2",_t._oid+","+arguments[0],rcb); }else{ var a=arguments; MI.assertInt(a[0]); - return _t._mcu.rpc(_t.RPC_NS+":write1",_t._oid+","+a[0]+",\""+MI.byteArray2bstr(a[1])+"\","+(a[2]?1:0),cb); + return _t._mcu.rpc(_t.RPC_NS+":write1",_t._oid+","+a[0]+",\""+MI.byteArray2bstr(a[1])+"\","+(a[2]?1:0),rcb); } }catch(e){ throw new MI.MiMicException(e); @@ -336,15 +343,16 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onStart); + MI._assertYield.call(_t); _t._lc=CLASS.start; return _t._mcu.rpc(_t.RPC_NS+":start",_t._oid, - function (j) - { - if(_t._event.onStart){_t._event.onStart();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -363,15 +371,16 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} - _t._lc=CLASS.stop; + var cb=MI._getCb(arguments,_t._event.onStop); + MI._assertYield.call(_t); + _t._lc=CLASS.stop; return _t._mcu.rpc(_t.RPC_NS+":stop",_t._oid, - function (j) - { - if(_t._event.onStop){_t._event.onStop();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.I2CSlave.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.I2CSlave.js index 7ab644f..572e634 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.I2CSlave.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.I2CSlave.js @@ -14,8 +14,8 @@ var MI=MiMicJS; * インスタンスをバインドするMCUオブジェクトです。 * @param {[PinName,PinName]} i_params * i2Cバスを構成するピンIDを指定します。sda,sclの順番です。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.I2CSlave} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -138,17 +141,17 @@ var CLASS=function I2CSlave(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } - MI.assertInt(i_params); - return _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1],cb); + var cb=MI._initHandler.call(_t,i_handler); + MI.assertInt(i_params); + _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1], + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -202,15 +205,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onAddress); + MI._assertYield.call(_t); _t._lc=CLASS.write; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":address",_t._oid+","+i_value, - function(j){ - if(_t._event.onAddress){_t._event.onAddress();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - }); + function(j){ + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -230,16 +235,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onFrequency); + MI._assertYield.call(_t); _t._lc=CLASS.frequency; MI.assertInt(i_hz); return _t._mcu.rpc(_t.RPC_NS+":frequency",_t._oid+","+i_hz, - function (j) - { - if(_t._event.onFrequency){_t._event.onFrequency();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -283,19 +289,20 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; - function cb(j){ + function rcb(j){ var v=j.result.length>1?{ret:j.result[0],data:MI.bstr2byteArray(j.result[1])}:j.result[0]; - if(_t._event.onRead){_t._event.onRead(v);} + if(cb){cb(v);} if(_t._gen){_t._gen.next(v);} _t._lc=null; } - if(arguments.length==0){ - return _t._mcu.rpc(_t.RPC_NS+":read2",_t._oid,cb); + if(MI._getBaseArgsLen(arguments)==0){ + return _t._mcu.rpc(_t.RPC_NS+":read2",_t._oid,rcb); }else{ MI.assertInt(arguments[0]); - return _t._mcu.rpc(_t.RPC_NS+":read1",_t._oid+","+arguments[0],cb); + return _t._mcu.rpc(_t.RPC_NS+":read1",_t._oid+","+arguments[0],rcb); } }catch(e){ throw new MI.MiMicException(e); @@ -316,16 +323,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onReceive); + MI._assertYield.call(_t); _t._lc=CLASS.start; return _t._mcu.rpc(_t.RPC_NS+":receive",_t._oid, - function (j) - { - var v=j.result[0]; - if(_t._event.onReceive){_t._event.onReceive(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -335,8 +343,6 @@ CLASS.prototype= * 引数が3個の場合 * @name mbedJS.I2CSlave#write.1 * @function - * @param {int} address - * 8ビットのI2CSlaveSlaveアドレスです。 * @param {byte[]} data * 送信するデータを格納したバイト配列です。 * @return {int} @@ -368,20 +374,21 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onWrite); + MI._assertYield.call(_t); _t._lc=CLASS.write; - function cb(j){ + function rcb(j){ var v=j.result[0]; - if(_t._event.onWrite){_t._event.onWrite(v);} + if(cb){cb(v);} if(_t._gen){_t._gen.next(v);} _t._lc=null; } if(!MI.isArray(arguments[0])){ MI.assertInt(arguments[0]); - return _t._mcu.rpc(_t.RPC_NS+":write2",_t._oid+","+arguments[0],cb); + return _t._mcu.rpc(_t.RPC_NS+":write2",_t._oid+","+arguments[0],rcb); }else{ var a=arguments; - return _t._mcu.rpc(_t.RPC_NS+":write1",_t._oid+",\""+MI.byteArray2bstr(a[0])+"\"",cb); + return _t._mcu.rpc(_t.RPC_NS+":write1",_t._oid+",\""+MI.byteArray2bstr(a[0])+"\"",rcb); } }catch(e){ throw new MI.MiMicException(e); @@ -400,15 +407,16 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onStop); + MI._assertYield.call(_t); _t._lc=CLASS.stop; return _t._mcu.rpc(_t.RPC_NS+":stop",_t._oid, - function (j) - { - if(_t._event.onStop){_t._event.onStop();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.Mcu.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.Mcu.js index 6f1346b..af20836 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.Mcu.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.Mcu.js @@ -157,6 +157,7 @@ CLASS.prototype= }, /** * コールバック関数を全てキャンセルして、Mcuとの接続をシャットダウンします。 + * この関数は即座に完了します。 * @name mbedJS.Mcu#shutdown * @function */ @@ -220,6 +221,9 @@ CLASS.prototype= * 指定idのオブジェクトをMCUのメモリから削除します。 * @name mbedJS.Mcu#disposeObject * @function + * @param {int} i_oid + * オブジェクトID。 + * mbedJSオブジェクトが所有するリモートオブジェクトのIDを指定します。 * @return {boolean} * 結果を返します。 */ diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.Memory.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.Memory.js index e230b64..aedda29 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.Memory.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.Memory.js @@ -12,8 +12,8 @@ var MI=MiMicJS; * @constructor * @param {mbedJS.Mcu} i_mcu * インスタンスをバインドするMCUオブジェクトです。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.Memory} * @example //Callback * var s=0; @@ -166,15 +169,15 @@ var CLASS=function Memory(i_mcu,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } - return _t._mcu.rpc(_t.RPC_NS+":init","",cb); + var cb=MI._initHandler.call(_t,i_handler); + _t._mcu.rpc(_t.RPC_NS+":init","", + function(j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -225,15 +228,16 @@ CLASS.prototype= //read(i_addr,i_len) try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; - var a=[i_addr,MI.isUndefined(i_size,1)]; + var a=[i_addr,(MI._getBaseArgsLen(arguments)==1)?i_size:1]; MI.assertInt(a); return _t._mcu.rpc(_t.RPC_NS+":read",a[0]+","+a[1], function (j) { var v=MI.bstr2byteArray(j.result[0]); - if(_t._event.onRead){_t._event.onRead(v);} + if(cb){cb(v);} if(_t._gen){_t._gen.next(v);} _t._lc=null; }); @@ -259,17 +263,18 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onWrite); + MI._assertYield.call(_t); _t._lc=CLASS.write; MI.assertInt(i_addr); MI.assertInt(i_v); return _t._mcu.rpc(_t.RPC_NS+":write",i_addr+",\""+MI.byteArray2bstr(i_v)+"\"", - function (j) - { - if(_t._event.onWrite){_t._event.onWrite();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -296,21 +301,24 @@ CLASS.prototype= //read(i_addr,i_len) try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead32); + MI._assertYield.call(_t); _t._lc=CLASS.read32; - var a=[i_addr,MI.isUndefined(i_size,4)]; + + var a=[i_addr,(MI._getBaseArgsLen(arguments)==1)?4:i_size]; if(a[1]%4!=0){ throw new MI.MiMicException(MI.Error.NG_INVALID_ARG); } MI.assertInt(a); return _t._mcu.rpc(_t.RPC_NS+":read",a[0]+","+a[1], - function (j) - { - var v=MI.bstr2uintArray(j.result[0]); - if(_t._event.onRead32){_t._event.onRead32(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - }); + function (j) + { + var v=MI.bstr2uintArray(j.result[0]); + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -333,17 +341,18 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onWrite32); + MI._assertYield.call(_t); _t._lc=CLASS.write32; MI.assertInt(i_addr); MI.assertInt(i_v); return _t._mcu.rpc(_t.RPC_NS+":write",i_addr+",\""+MI.uintArray2bstr(i_v)+"\"", - function (j) - { - if(_t._event.onWrite){_t._event.onWrite32();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.PortIn.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.PortIn.js index f83268f..3b89626 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.PortIn.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.PortIn.js @@ -25,8 +25,8 @@ var MI=MiMicJS; *

配列の場合は次の順番でパラメータを指定します。 *

{port,mask}
*

- * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.PortIn} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -87,15 +90,7 @@ var CLASS=function PortIn(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + var cb=MI._initHandler.call(_t,i_handler); //引数の正規化 var pr; if(MI.isHashArray(i_params)){ @@ -104,7 +99,15 @@ var CLASS=function PortIn(i_mcu,i_params,i_handler) pr=i_params; } MI.assertInt(pr); - return _t._mcu.rpc(_t.RPC_NS+":_new1",pr[0]+","+pr[1],cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",pr[0]+","+pr[1], + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -151,16 +154,18 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid, - function (j) - { - var v=j.result[0]; - if(_t._event.onRead){_t._event.onRead(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - }); + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.PortOut.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.PortOut.js index 8a4eecc..0f460ea 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.PortOut.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.PortOut.js @@ -25,8 +25,8 @@ var MI=MiMicJS; *

配列の場合は次の順番でパラメータを指定します。 *

{port,mask}
*

- * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.PortOut} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -91,15 +94,7 @@ var CLASS=function PortOut(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + var cb=MI._initHandler.call(_t,i_handler); //引数の正規化 var pr; if(MI.isHashArray(i_params)){ @@ -108,7 +103,15 @@ var CLASS=function PortOut(i_mcu,i_params,i_handler) pr=i_params; } MI.assertInt(pr); - return _t._mcu.rpc(_t.RPC_NS+":_new1",pr[0]+","+pr[1],cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",pr[0]+","+pr[1], + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -154,15 +157,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onWrite); + MI._assertYield.call(_t); _t._lc=CLASS.write; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":write",_t._oid+","+i_value, - function(j){ - if(_t._event.onWrite){_t._event.onWrite();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - }); + function(j){ + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -182,16 +187,18 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid, - function (j) - { - var v=j.result[0]; - if(_t._event.onRead){_t._event.onRead(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - }); + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.PwmOut.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.PwmOut.js index 10d9aec..6fe758d 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.PwmOut.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.PwmOut.js @@ -14,8 +14,8 @@ var MI=MiMicJS; * インスタンスをバインドするMCUオブジェクトです。 * @param {PinName} i_params * ピンIDを指定します。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.PwmOut} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -122,17 +125,17 @@ var CLASS=function PwmOut(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + var cb=MI._initHandler.call(_t,i_handler); MI.assertInt(i_params); - return _t._mcu.rpc(_t.RPC_NS+":_new1",i_params,cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",i_params, + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -180,12 +183,13 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onWrite); + MI._assertYield.call(_t); _t._lc=CLASS.write; MI.assertNumber(i_value); return _t._mcu.rpc(_t.RPC_NS+":write_fx",_t._oid+","+Math.round(i_value*10000), function(j){ - if(_t._event.onWrite){_t._event.onWrite();} + if(cb){cb();} if(_t._gen){_t._gen.next();} _t._lc=null; }); @@ -207,13 +211,14 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onRead); + MI._assertYield.call(_t); _t._lc=CLASS.read; return _t._mcu.rpc(_t.RPC_NS+":read_fx",_t._oid, function (j) { var v=j.result[0]/10000; - if(_t._event.onRead){_t._event.onRead(v);} + if(cb){cb(v);} if(_t._gen){_t._gen.next(v);} _t._lc=null; }); @@ -237,12 +242,13 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onPeriod); + MI._assertYield.call(_t); _t._lc=CLASS.period; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":period_fx",_t._oid+","+Math.round(i_value*10000), function(j){ - if(_t._event.onPeriod){_t._event.onPeriod();} + if(cb){cb();} if(_t._gen){_t._gen.next();} _t._lc=null; }); @@ -266,12 +272,13 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onPeriod_ms); + MI._assertYield.call(_t); _t._lc=CLASS.period_ms; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":period_ms",_t._oid+","+Math.round(i_value), function(j){ - if(_t._event.onPeriod_ms){_t._event.onPeriod_ms();} + if(cb){cb();} if(_t._gen){_t._gen.next();} _t._lc=null; }); @@ -295,12 +302,13 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onPeriod_us); + MI._assertYield.call(_t); _t._lc=CLASS.period_us; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":period_us",_t._oid+","+Math.round(i_value), function(j){ - if(_t._event.onPeriod_us){_t._event.onPeriod_us();} + if(cb){cb();} if(_t._gen){_t._gen.next();} _t._lc=null; }); @@ -324,12 +332,13 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onPulsewidth); + MI._assertYield.call(_t); _t._lc=CLASS.pulsewidth; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":pulsewidth_fx",_t._oid+","+Math.round(i_value*10000), function(j){ - if(_t._event.onPulsewidth){_t._event.onPulsewidth();} + if(cb){cb();} if(_t._gen){_t._gen.next();} _t._lc=null; }); @@ -352,15 +361,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onPulsewidth_ms); + MI._assertYield.call(_t); _t._lc=CLASS.pulsewidth_ms; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":pulsewidth_ms",_t._oid+","+Math.round(i_value), - function(j){ - if(_t._event.onPulsewidth_ms){_t._event.onPulsewidth_ms();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - }); + function(j){ + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -380,15 +391,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + var cb=MI._getCb(arguments,_t._event.onPulsewidth_us); + MI._assertYield.call(_t); _t._lc=CLASS.pulsewidth_us; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":pulsewidth_us",_t._oid+","+Math.round(i_value), - function(j){ - if(_t._event.onPulsewidth_us){_t._event.onPulsewidth_us();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - }); + function(j){ + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.SPI.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.SPI.js index bafe1e8..81ab64a 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.SPI.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.SPI.js @@ -14,8 +14,8 @@ var MI=MiMicJS; * インスタンスをバインドするMCUオブジェクトです。 * @param {[PinName,PinName,PinName]} i_params * SPIを構成する3つのPinNameを格納する配列です。mosi,miso,sclkの順番です。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.SPI} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -87,17 +90,17 @@ var CLASS=function SPI(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + var cb=MI._initHandler.call(_t,i_handler); MI.assertInt(i_params); - return _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1]+","+i_params[2]+","+NS.PinName.NC,cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1]+","+i_params[2]+","+NS.PinName.NC, + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -144,16 +147,18 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onWrite); _t._lc=CLASS.write; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":write",_t._oid+","+i_value, - function(j){ - var v=j.result[0]; - if(_t._event.onWrite){_t._event.onWrite(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - }); + function(j){ + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -173,15 +178,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onFrequency); _t._lc=CLASS.frequency; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":frequency",_t._oid+","+i_value, - function(j){ - if(_t._event.onFrequency){_t._event.onFrequency();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - }); + function(j){ + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -202,16 +209,18 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onFormat); _t._lc=CLASS.format; var mode=i_mode?i_mode:0; MI.assertInt([i_bits,mode]); return _t._mcu.rpc(_t.RPC_NS+":format",_t._oid+","+i_bits+","+mode, - function(j){ - if(_t._event.onFormat){_t._event.onFormat();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - }); + function(j){ + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.SPISlave.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.SPISlave.js index 97a2f4d..04578c0 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.SPISlave.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.SPISlave.js @@ -15,8 +15,8 @@ var MI=MiMicJS; * @param {[PinName,PinName,PinName]} i_params * SPIを構成する4つのPinNameを格納する配列です。 * mosi, miso, sclkの順番で設定します。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.SPI} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -104,17 +107,17 @@ var CLASS=function SPISlave(i_mcu,i_params,i_handler) var _t=this; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + var cb=MI._initHandler.call(_t,i_handler); MI.assertInt(i_params); - return _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1]+","+i_params[2]+","+i_params[3],cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1]+","+i_params[2]+","+i_params[3], + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -162,12 +165,13 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onFrequency); _t._lc=CLASS.frequency; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":frequency",_t._oid+","+i_value, function(j){ - if(_t._event.onFrequency){_t._event.onFrequency();} + if(cb){cb();} if(_t._gen){_t._gen.next();} _t._lc=null; }); @@ -191,13 +195,14 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onFormat); _t._lc=CLASS.format; var mode=i_mode?i_mode:0; MI.assertInt([i_bits,mode]); return _t._mcu.rpc(_t.RPC_NS+":format",_t._oid+","+i_bits+","+mode, function(j){ - if(_t._event.onFormat){_t._event.onFormat();} + if(cb){cb();} if(_t._gen){_t._gen.next();} _t._lc=null; }); @@ -220,13 +225,14 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onRead); _t._lc=CLASS.read; return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid, function (j) { var v=j.result[0]; - if(_t._event.onRead){_t._event.onRead(v);} + if(cb){cb(v);} if(_t._gen){_t._gen.next(v);} _t._lc=null; }); @@ -249,13 +255,14 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onReceive); _t._lc=CLASS.receive; return _t._mcu.rpc(_t.RPC_NS+":receive",_t._oid, function (j) { var v=j.result[0]; - if(_t._event.onReceive){_t._event.onReceive(v);} + if(cb){cb(v);} if(_t._gen){_t._gen.next(v);} _t._lc=null; }); @@ -278,13 +285,14 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onReply); _t._lc=CLASS.reply; MI.assertInt(i_value); return _t._mcu.rpc(_t.RPC_NS+":reply",_t._oid+","+i_value, function (j) { - if(_t._event.onReply){_t._event.onReply();} + if(cb){cb();} if(_t._gen){_t._gen.next();} _t._lc=null; }); diff --git a/misc/mbedJS/mbddJS.API/mbedJS/mbed.Serial.js b/misc/mbedJS/mbddJS.API/mbedJS/mbed.Serial.js index 0f6e0fb..84d1ed0 100644 --- a/misc/mbedJS/mbddJS.API/mbedJS/mbed.Serial.js +++ b/misc/mbedJS/mbddJS.API/mbedJS/mbed.Serial.js @@ -14,8 +14,8 @@ var MI=MiMicJS; * インスタンスをバインドするMCUオブジェクトです。 * @param {[PinName,PinName]} i_params * UARTを構成する2本のピンを指定します。tx,rxの順で設定します。 - * @param {HashMap|Generator} i_event - * 非同期イベントハンドラの連想配列、又はGeneratorです。 + * @param {HashMap|Generator|function} i_handler + * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。 *

* 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。 *

*

* Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。 + *

*

+ * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。 + *

* @return {mbedJS.Serial} * @example //Callback * var mcu=new mbedJS.Mcu("192.168.128.39", @@ -146,19 +149,21 @@ var CLASS=function Serial(i_mcu,i_params,i_handler) { try{ var _t=this; + var cb; _t._mcu=i_mcu; _t._lc=CLASS; - if(MI.isGenerator(i_handler)){_t._gen=i_handler;} - else if(i_handler){_t._event=i_handler} - function cb(j) - { - _t._oid=j.result[0]; - if(_t._event.onNew){_t._event.onNew();} - if(_t._gen){_t._gen.next(_t);} - _t._lc=null; - } + //ハンドラの初期化 + var cb=MI._initHandler.call(_t,i_handler); MI.assertInt(i_params); - _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1],cb); + _t._mcu.rpc(_t.RPC_NS+":_new1",i_params[0]+","+i_params[1], + function(j) + { + _t._oid=j.result[0]; + if(cb){cb();} + if(_t._gen){_t._gen.next(_t);} + _t._lc=null; + } + ); }catch(e){ throw new MI.MiMicException(e); } @@ -218,17 +223,18 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onFormat); _t._lc=CLASS.format; var p=[MI.isUndefined(i_bits,8),MI.isUndefined(i_parity,_t.Parity.None),MI.isUndefined(i_stop_bits,1)]; MI.assertInt(p); return _t._mcu.rpc(_t.RPC_NS+":format",_t._oid+","+p[0]+","+p[1]+","+p[2], - function (j) - { - if(_t._event.onFormat){_t._event.onFormat();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -249,16 +255,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onReadable); _t._lc=CLASS.readable; return _t._mcu.rpc(_t.RPC_NS+":readable",_t._oid, - function (j) - { - var v=j.result[0]; - if(_t._event.onReadable){_t._event.onReadable(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -279,16 +286,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onWriteable); _t._lc=CLASS.writeable; return _t._mcu.rpc(_t.RPC_NS+":writeable",_t._oid, - function (j) - { - var v=j.result[0]?true:false; - if(_t._event.onWriteable){_t._event.onWriteable(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]?true:false; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -307,15 +315,16 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onSend_break); _t._lc=CLASS.send_break; return _t._mcu.rpc(_t.RPC_NS+":send_break",_t._oid, - function (j) - { - if(_t._event.onSend_break){_t._event.onSend_break();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -336,17 +345,18 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onPutc); _t._lc=CLASS.putc; MI.assertInt(i_c); return _t._mcu.rpc(_t.RPC_NS+":putc",_t._oid+","+i_c, - function (j) - { - var v=j.result[0]; - if(_t._event.onPutc){_t._event.onPutc(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -367,16 +377,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onPuts); _t._lc=CLASS.puts; return _t._mcu.rpc(_t.RPC_NS+":puts",_t._oid+",\""+i_s+"\"", - function (j) - { - var v=j.result[0]; - if(_t._event.onPuts){_t._event.onPuts(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -397,16 +408,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onGetc); _t._lc=CLASS.getc; return _t._mcu.rpc(_t.RPC_NS+":getc",_t._oid, - function (j) - { - var v=j.result[0]; - if(_t._event.onGetc){_t._event.onGetc(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -429,17 +441,18 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onGets); _t._lc=CLASS.gets; MI.assertInt(i_len); return _t._mcu.rpc(_t.RPC_NS+":gets",_t._oid+","+i_len, - function (j) - { - var v=j.result[0]; - if(_t._event.onGets){_t._event.onGets(v);} - if(_t._gen){_t._gen.next(v);} - _t._lc=null; - } + function (j) + { + var v=j.result[0]; + if(cb){cb(v);} + if(_t._gen){_t._gen.next(v);} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); @@ -460,16 +473,17 @@ CLASS.prototype= { try{ var _t=this; - if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);} + MI._assertYield.call(_t); + var cb=MI._getCb(arguments,_t._event.onBaud); _t._lc=CLASS.baud; MI.assertInt(i_baudrate); return _t._mcu.rpc(_t.RPC_NS+":baud",_t._oid+","+i_baudrate, - function (j) - { - if(_t._event.onBaud){_t._event.onBaud();} - if(_t._gen){_t._gen.next();} - _t._lc=null; - } + function (j) + { + if(cb){cb();} + if(_t._gen){_t._gen.next();} + _t._lc=null; + } ); }catch(e){ throw new MI.MiMicException(e); diff --git a/misc/mbedJS/mbddJS.API/test.AnalogIn.html b/misc/mbedJS/mbddJS.API/test.AnalogIn.html index 75d281e..d45c695 100644 --- a/misc/mbedJS/mbddJS.API/test.AnalogIn.html +++ b/misc/mbedJS/mbddJS.API/test.AnalogIn.html @@ -62,6 +62,35 @@ function async() }); } +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.AnalogIn(mcu,mbedJS.PinName.A0, + function(){ + log("[PASS]onNew"); + pin.read(function(v) + { + log("[PASS]onread:"+v); + pin.read_u16(function(v){ + log("[PASS]onRead_u16:"+v); + mcu.close(); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} + /** * 誤った使用方法でExceptionが出た場合にシャットダウンできるかのテスト */ @@ -101,6 +130,7 @@ function sync()

AnalogIn test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.AnalogOut.html b/misc/mbedJS/mbddJS.API/test.AnalogOut.html index 45bfe95..0f2497f 100644 --- a/misc/mbedJS/mbddJS.API/test.AnalogOut.html +++ b/misc/mbedJS/mbddJS.API/test.AnalogOut.html @@ -69,7 +69,38 @@ function async() } }); } - +function async2() +{ + log(); + log("ASYNC"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.AnalogOut(mcu,mbedJS.PinName.p18,function(){ + log("[PASS]onNew"); + pin.write(0.5,function() + { + log("[PASS]onWrite"); + pin.read(function(v) + { + log("[PASS]onread:"+v); + pin.write_u16(0,function() + { + log("[PASS]onWrite_u16:"); + mcu.close(); + }); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * 誤った使用方法でExceptionが出た場合にシャットダウンできるかのテスト */ @@ -113,6 +144,7 @@ function sync()

Analogout test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.BusIn.html b/misc/mbedJS/mbddJS.API/test.BusIn.html index abc83a2..b541594 100644 --- a/misc/mbedJS/mbddJS.API/test.BusIn.html +++ b/misc/mbedJS/mbddJS.API/test.BusIn.html @@ -61,6 +61,33 @@ function async() } }); } +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.BusIn(mcu,[mbedJS.PinName.P0_21,mbedJS.PinName.P0_22],function(){ + log("[PASS]onNew"); + pin.read(function(v) + { + log("[PASS]onread:"+v); + pin.mode(mbedJS.PinMode.PullDown,function(v){ + log("[PASS]onMode:"); + mcu.close(); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * 誤った使用方法でExceptionが出た場合にシャットダウンできるかのテスト @@ -101,6 +128,7 @@ function sync()

BusIn test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.BusInOut.html b/misc/mbedJS/mbddJS.API/test.BusInOut.html index 57a5f20..76b2442 100644 --- a/misc/mbedJS/mbddJS.API/test.BusInOut.html +++ b/misc/mbedJS/mbddJS.API/test.BusInOut.html @@ -77,6 +77,48 @@ function async() }); } +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var bus=new mbedJS.BusInOut(mcu,[mbedJS.PinName.P0_21,mbedJS.PinName.P0_22],function(){ + log("[PASS]onNew"); + bus.mode(mbedJS.PinMode.PullDown,function() + { + log("[PASS]onMode"); + bus.output(function() + { + log("[PASS]onOutput:"); + bus.write(1,function() + { + log("[PASS]onWrite:"); + bus.input(function(){ + log("[PASS]onInput:"); + bus.read(function(v) + { + log("[PASS]onRead:"+v); + mcu.close(); + }); + }); + }); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} + + + /** * 誤った使用方法でExceptionが出た場合にシャットダウンできるかのテスト */ @@ -120,6 +162,7 @@ function sync()

BusInOut test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.BusOut.html b/misc/mbedJS/mbddJS.API/test.BusOut.html index 69dc22c..31ffd0d 100644 --- a/misc/mbedJS/mbddJS.API/test.BusOut.html +++ b/misc/mbedJS/mbddJS.API/test.BusOut.html @@ -63,6 +63,34 @@ function async() }); } +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var bus=new mbedJS.BusOut(mcu,[mbedJS.PinName.P0_21,mbedJS.PinName.P0_22],function(){ + log("[PASS]onNew"); + bus.write(2,function() + { + log("[PASS]onWrite:"); + bus.read(function(v){ + log("[PASS]onRead:"+v); + mcu.close(); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} + /** * 誤った使用方法でExceptionが出た場合にシャットダウンできるかのテスト */ @@ -100,6 +128,7 @@ function sync()

BusOut test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.DigitalIn.html b/misc/mbedJS/mbddJS.API/test.DigitalIn.html index 57a931c..3b95409 100644 --- a/misc/mbedJS/mbddJS.API/test.DigitalIn.html +++ b/misc/mbedJS/mbddJS.API/test.DigitalIn.html @@ -62,6 +62,33 @@ function async() }); } +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.DigitalIn(mcu,mbedJS.PinName.P0_22,function(){ + log("[PASS]onNew"); + pin.mode(mbedJS.PinMode.PullUp,function() + { + log("[PASS]onMode:"); + pin.read(function(v){ + log("[PASS]onRead:"+v); + mcu.close(); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * 誤った使用方法でExceptionが出た場合にシャットダウンできるかのテスト */ @@ -101,6 +128,7 @@ function sync()

DigitalIn test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.DigitalOut.html b/misc/mbedJS/mbddJS.API/test.DigitalOut.html index e5e513d..61f61bc 100644 --- a/misc/mbedJS/mbddJS.API/test.DigitalOut.html +++ b/misc/mbedJS/mbddJS.API/test.DigitalOut.html @@ -49,6 +49,32 @@ function async() } }); } +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.DigitalOut(mcu,mbedJS.PinName.P0_22,function(){ + log("[PASS]onNew"); + pin.read(function(v){ + log("[PASS]onRead "+v); + pin.write((v+1)%2,function(){ + log("[PASS]onWrite"); + mcu.close(); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * 誤った使用方法でExceptionが出た場合にシャットダウンできるかのテスト @@ -93,6 +119,7 @@ function sync()

Digitalout test


+ diff --git a/misc/mbedJS/mbddJS.API/test.I2C.html b/misc/mbedJS/mbddJS.API/test.I2C.html index 124f324..35831be 100644 --- a/misc/mbedJS/mbddJS.API/test.I2C.html +++ b/misc/mbedJS/mbddJS.API/test.I2C.html @@ -91,7 +91,49 @@ function async() } }); } - +function async2() +{ + log(); + log("ASYNC2"); + var st=0; + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var i2c=new mbedJS.I2C(mcu,[mbedJS.PinName.p28,mbedJS.PinName.p27],function(){ + log("[PASS]onNew"); + i2c.frequency(100000,function() + { + log("[PASS]onFrequency:"); + i2c.start(function(){ + log("[PASS]onStart:"); + i2c.write(1,function(v){ + log("[PASS]onWrite:"+v); + i2c.write(0,[1,2,3],false,function(v){ + log("[PASS]onWrite:"+v); + i2c.read(1,function(v){ + log("[PASS]onRead:"+v); + i2c.read(1,2,false,function(v){ + log("[PASS]onRead:"+v.ret+":"+v.data); + i2c.stop(function(){ + log("[PASS]onStop:"); + mcu.close(); + }); + }); + }); + }); + }); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * */ @@ -110,11 +152,11 @@ function sync() log("[PASS]onFrequency:"); yield i2c.start(); log("[PASS]onStart:"); - yield i2c.write(1); - v=log("[PASS]onWrite:"+v); - yield i2c.write(0,[1,2,3],false); - v=log("[PASS]onWrite2:"+v); - yield i2c.read(1); + v=yield i2c.write(1); + log("[PASS]onWrite:"+v); + v=yield i2c.write(0,[1,2,3],false); + log("[PASS]onWrite2:"+v); + v=yield i2c.read(1); log("[PASS]onRead:"+v); v=yield i2c.read(1,2,false); log("[PASS]onRead:"+v.ret+":"+v.data); @@ -140,6 +182,7 @@ function sync()

I2C test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.I2CSlave.html b/misc/mbedJS/mbddJS.API/test.I2CSlave.html index 660fb3a..a84b8eb 100644 --- a/misc/mbedJS/mbddJS.API/test.I2CSlave.html +++ b/misc/mbedJS/mbddJS.API/test.I2CSlave.html @@ -97,6 +97,53 @@ function async() } }); } +function async() +{ + log(); + log("ASYNC"); + var st=0; + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var i2c=new mbedJS.I2CSlave(mcu,[mbedJS.PinName.p28,mbedJS.PinName.p27],function(){ + log("[PASS]onNew"); + i2c.frequency(100000,function() + { + log("[PASS]onFrequency:"); + i2c.address(1,function() + { + log("[PASS]onAddress:"); + i2c.receive(function(){ + log("[PASS]onReceive:"); + i2c.write(1,function(v){ + log("[PASS]onWrite:"+v); + i2c.write([1,2,3],function(v){ + log("[PASS]onWrite:"+v); + i2c.read(function(v){ + log("[PASS]onRead:"+v); + i2c.read(2,false,function(v){ + log("[PASS]onRead:"+v.ret+":"+v.data); + i2c.stop(function(){ + log("[PASS]onStop:"); + mcu.close(); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * @@ -127,6 +174,7 @@ function sync() log("[PASS]onRead:"+v.ret+":"+v.data); yield i2c.stop(); yield mcu.close(); + log("[PASS]onstop"); }catch(e){ mcu.shutdown(); alert(e); @@ -145,6 +193,7 @@ function sync()

I2CSlave test


+ diff --git a/misc/mbedJS/mbddJS.API/test.Memory.html b/misc/mbedJS/mbddJS.API/test.Memory.html index 71becd4..58c38c2 100644 --- a/misc/mbedJS/mbddJS.API/test.Memory.html +++ b/misc/mbedJS/mbddJS.API/test.Memory.html @@ -104,6 +104,62 @@ function async() } }); } + +function async2() +{ + var s=0; + log(); + log("ASYNC"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var mem=new mbedJS.Memory(mcu,function(){ + mem.write(0x20080000,1,function(){ + log("[PASS]onWrite:"); + mem.read(0x20080000,1,function(v){ + log("[PASS]onRead:"+v); + mem.read(0x20080001,1,function(v){ + log("[PASS]onRead:"+v); + mem.read(0x20080000,8,function(v){ + log("[PASS]onRead:"+v); + mem.write(0x20080001,[2],function(){ + log("[PASS]onWrite:"); + mem.write(0x20080004,[10,20,30],function(){ + log("[PASS]onWrite:"); + mem.write32(0x20080000,0xff,function(){ + log("[PASS]onWrite32:"); + mem.read32(0x20080000,function(v){ + log("[PASS]onRead32:"+v); + mem.read32(0x20080004,4,function(v){ + log("[PASS]onRead32:"+v); + mem.read32(0x20080000,16,function(v){ + log("[PASS]onRead32:"+v); + mem.write32(0x20080004,[2],function(){ + log("[PASS]onWrite32:"+s); + mem.write32(0x20080004,[10,20,30],function(){ + mcu.close(); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} function sync() { log(); @@ -157,6 +213,7 @@ function sync()

Memory test


+ diff --git a/misc/mbedJS/mbddJS.API/test.PortIn.html b/misc/mbedJS/mbddJS.API/test.PortIn.html index 13f6e82..5d6f160 100644 --- a/misc/mbedJS/mbddJS.API/test.PortIn.html +++ b/misc/mbedJS/mbddJS.API/test.PortIn.html @@ -57,7 +57,29 @@ function async() } }); } - +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.PortIn(mcu,[mbedJS.PortName.Port0,0xffffffff],function(){ + log("[PASS]onNew"); + pin.read(function(v){ + log("[PASS]read:"+v); + mcu.close(); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * Sync */ @@ -96,6 +118,7 @@ function sync()

PortIn test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.PortOut.html b/misc/mbedJS/mbddJS.API/test.PortOut.html index 42e3b12..7b25c4b 100644 --- a/misc/mbedJS/mbddJS.API/test.PortOut.html +++ b/misc/mbedJS/mbddJS.API/test.PortOut.html @@ -62,7 +62,34 @@ function async() } }); } - +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.PortOut(mcu,[mbedJS.PortName.Port0,0xffffffff],function(){ + log("[PASS]onNew"); + pin.write(1234,function() + { + log("[PASS]write:"); + pin.read(function(v) + { + log("[PASS]read:"+v); + mcu.close(); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * Sync */ @@ -103,6 +130,7 @@ function sync()

PortOut test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.PwmOut.html b/misc/mbedJS/mbddJS.API/test.PwmOut.html index 96fc2a0..548b4be 100644 --- a/misc/mbedJS/mbddJS.API/test.PwmOut.html +++ b/misc/mbedJS/mbddJS.API/test.PwmOut.html @@ -87,7 +87,51 @@ function async() } }); } - +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.PwmOut(mcu,mbedJS.PinName.p21,function(){ + log("[PASS]onNew"); + pin.write(0.33,function(){ + log("[PASS]onwrite:"); + pin.read(function(v) + { + log("[PASS]onread:"+v); + pin.period(1.0,function(){ + log("[PASS]onPeriod:"); + pin.period_ms(1,function(){ + log("[PASS]onPeriod_ms:"); + pin.period_us(10,function(){ + log("[PASS]onPeriod_us:"); + pin.pulsewidth(3,function(){ + log("[PASS]onPulseWidth:"); + pin.pulsewidth_ms(30,function(){ + log("[PASS]onPulseWidth_ms:"); + pin.pulsewidth_us(40,function(){ + log("[PASS]onPulseWidth_us:"); + mcu.close(); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * Sync */ @@ -138,6 +182,7 @@ function sync()

Pwm test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.SPI.html b/misc/mbedJS/mbddJS.API/test.SPI.html index 1676e90..bccd66c 100644 --- a/misc/mbedJS/mbddJS.API/test.SPI.html +++ b/misc/mbedJS/mbddJS.API/test.SPI.html @@ -67,6 +67,38 @@ function async() }); } + +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.SPI(mcu,[mbedJS.PinName.p5,mbedJS.PinName.p6,mbedJS.PinName.p7],function(){ + log("[PASS]onNew"); + pin.frequency(1000000,function() + { + log("[PASS]onFrequency:"); + pin.format(8,3,function() + { + log("[PASS]onFormat:"); + pin.write(39,function(v){ + log("[PASS]onWrite:"+v); + mcu.close(); + }); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * 誤った使用方法でExceptionが出た場合にシャットダウンできるかのテスト */ @@ -107,6 +139,7 @@ function sync()

SPI test


+ \ No newline at end of file diff --git a/misc/mbedJS/mbddJS.API/test.SPISlave.html b/misc/mbedJS/mbddJS.API/test.SPISlave.html index 90ed48f..90b97c4 100644 --- a/misc/mbedJS/mbddJS.API/test.SPISlave.html +++ b/misc/mbedJS/mbddJS.API/test.SPISlave.html @@ -78,6 +78,46 @@ function async() }); } +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var pin=new mbedJS.SPISlave(mcu,[mbedJS.PinName.p5,mbedJS.PinName.p6,mbedJS.PinName.p7,mbedJS.PinName.p8],function(){ + log("[PASS]onNew"); + pin.frequency(1000000,function() + { + log("[PASS]onFrequency:"); + pin.format(8,3,function() + { + log("[PASS]onFormat:"); + pin.read(function(v){ + log("[PASS]onread:"+v); + pin.receive(function(v) + { + log("[PASS]onReceive:"+v); + pin.reply(1,function(){ + log("[PASS]onReply:"); + mcu.close(); + }); + }); + }); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} + + /** * */ @@ -121,6 +161,7 @@ function sync()

SPISlave test


+ diff --git a/misc/mbedJS/mbddJS.API/test.Serial.html b/misc/mbedJS/mbddJS.API/test.Serial.html index 7fca708..88c78e8 100644 --- a/misc/mbedJS/mbddJS.API/test.Serial.html +++ b/misc/mbedJS/mbddJS.API/test.Serial.html @@ -92,7 +92,55 @@ function async() } }); } - +function async2() +{ + log(); + log("ASYNC2"); + var mcu=new mbedJS.Mcu("192.168.128.39", + { + onNew:function(){ + var uart=new mbedJS.Serial(mcu,[mbedJS.PinName.p9,mbedJS.PinName.p10], + function(){ + log("[PASS]onNew"); + uart.baud(115200,function() + { + log("[PASS]onBaud:"); + uart.send_break(function(){ + log("[PASS]onSend_break:"); + uart.format(8,uart.Parity.None,1,function(){ + log("[PASS]onForma:"); + uart.readable(function(v){ + log("[PASS]onReadable:"+v); + uart.writeable(function(v){ + log("[PASS]onWritable:"+v); + uart.putc(32,function(v){ + log("[PASS]onPutc:"+v); + uart.getc(function(v){ + log("[PASS]onGetc:"+v); + uart.puts("1234",function(v){ + log("[PASS]onPuts:"+v); + uart.gets(5,function(v){ + log("[PASS]onGets:"+v); + mcu.close(); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }, + onClose:function(){ + log("[PASS]onClose"); + }, + onError:function(){ + alert("Error"); + } + }); +} /** * */ @@ -146,6 +194,7 @@ function sync()

Serial test


+