+++ /dev/null
-(function(){\r
-var NS=mbedJS;\r
-var MI=MiMicJS;\r
-\r
-/**\r
- * @name mbedJS.PortOut\r
- * PortOutクラスです。\r
- * <a href="https://mbed.org/handbook/PortOut">mbed::PortOut</a>と同等の機能を持ちます。\r
- * @constructor\r
- * @param {mbedJS.Mcu} i_mcu\r
- * インスタンスをバインドするMCUオブジェクトです。\r
- * @param {HashMap|Array} i_params\r
- * <p>\r
- * HashNapの場合は以下のメンバを指定できます。\r
- * <ul>\r
- * <li>{PortName} port -\r
- * ポート名を指定します。</li>\r
- * <li>{uint32} mask -\r
- * ポートマスクを指定します。</li>\r
- * </ul>\r
- * </p>\r
- * <p>配列の場合は次の順番でパラメータを指定します。\r
- * <pre>{port,mask}</pre>\r
- * </p>\r
- * @param {HashMap|Generator} i_event\r
- * 非同期イベントハンドラの連想配列、又はGeneratorです。\r
- * <p>\r
- * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。\r
- * <ul>\r
- * <li>{function()} onNew -\r
- * インスタンスが使用可能になった時に呼び出されます。\r
- * </li>\r
- * <li>{function()} onWrite -\r
- * write関数のコールバック関数です。\r
- * </li>\r
- * <li>{function(v)} onRead -\r
- * read関数のコールバック関数です。\r
- * <ul>\r
- * <li>{int} v - 現在のピンの値です。</li>\r
- * </ul>\r
- * </li>\r
- * </ul>\r
- * <p>\r
- * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。\r
- * <p>\r
- * @return {mbedJS.PortOut}\r
- * @example\r
- */\r
-var CLASS=function PortOut(i_mcu,i_params,i_handler)\r
-{\r
- try{\r
- var _t=this;\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 pr;\r
- if(MI.isHashArray(i_params)){\r
- pr=[i_params.port,i_params.mask];\r
- }else if(MI.isArray(i_params)){\r
- pr=i_params;\r
- }\r
- MI.assertInt(pr);\r
- return _t._mcu.rpc(_t.RPC_NS+":_new1",pr[0]+","+pr[1],cb);\r
- }catch(e){\r
- throw new MI.MiMicException(e);\r
- }\r
-}\r
-CLASS.prototype=\r
-{\r
- /** @private */\r
- RPC_NS:"mbedJS:PortOut",\r
- /** @private 最後にコールしたAPIです。*/\r
- _lc:null,\r
- /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/\r
- _gen:null,\r
- /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/\r
- _event:{},\r
- /** @private リモートインスタンスのオブジェクトIDです。*/\r
- _oid:null,\r
- /**\r
- * @name mbedJS.PortOut#waitForNew\r
- * @function\r
- * Generatorモードのときに使用する関数です。\r
- * Generatorモードの時は、yieldと併用してnew PortOut()の完了を待ちます。\r
- */\r
- waitForNew:function DigitalOut_waitForNew()\r
- {\r
- try{\r
- if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}\r
- this._lc=CLASS.waitForNew;\r
- }catch(e){\r
- throw new MI.MiMicException(e);\r
- }\r
- },\r
- /**\r
- * @name mbedJS.PortOut#write\r
- * @function\r
- * ポートへ値を出力します。\r
- * 関数の完了時にonWriteイベントが発生します。\r
- * Generatorモードの時は、yieldと併用して完了を待機できます。\r
- * @param {int} i_value\r
- * @return {int|none}\r
- * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>\r
- * <p>Generatorモードの時は戻り値はありません。</p>\r
- */\r
- write:function PortOut_write(i_value)\r
- {\r
- try{\r
- var _t=this;\r
- if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\r
- _t._lc=CLASS.write;\r
- MI.assertInt(i_value);\r
- return _t._mcu.rpc(_t.RPC_NS+":write",_t._oid+","+i_value,\r
- function(j){\r
- if(_t._event.onWrite){_t._event.onWrite();}\r
- if(_t._gen){_t._gen.next();}\r
- _t._lc=null;\r
- });\r
- }catch(e){\r
- throw new MI.MiMicException(e);\r
- }\r
- },\r
- /**\r
- * @name mbedJS.PortOut#write\r
- * @function\r
- * ポートから値を読み込みます。\r
- * 関数の完了時にonReadイベントが発生します。\r
- * Generatorモードの時は、yieldと併用して完了を待機できます。\r
- * @return {int|int}\r
- * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>\r
- * <p>Generatorモードの時はポートの値を返します。</p>\r
- */\r
- read:function PortOut_read()\r
- {\r
- try{\r
- var _t=this;\r
- if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\r
- _t._lc=CLASS.read;\r
- return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid,\r
- function (j)\r
- {\r
- var v=j.result[0];\r
- if(_t._event.onRead){_t._event.onRead(v);}\r
- if(_t._gen){_t._gen.next(v);}\r
- _t._lc=null;\r
- });\r
- }catch(e){\r
- throw new MI.MiMicException(e);\r
- }\r
- }\r
-}\r
-NS.PortOut=CLASS;\r
-}());
\ No newline at end of file