6 * @name mbedJS.PortIn
\r
8 * <a href="https://mbed.org/handbook/PortIn">mbed::PortIn</a>と同等の機能を持ちます。
\r
10 * @param {mbedJS.Mcu} i_mcu
\r
11 * インスタンスをバインドするMCUオブジェクトです。
\r
12 * @param {HashMap|Array} i_params
\r
14 * HashNapの場合は以下のメンバを指定できます。
\r
16 * <li>{PortName} port -
\r
18 * <li>{uint32} mask -
\r
19 * ポートマスクを指定します。</li>
\r
22 * <p>配列の場合は次の順番でパラメータを指定します。
\r
23 * <pre>{port,mask}</pre>
\r
25 * @param {HashMap|Generator} i_event
\r
26 * 非同期イベントハンドラの連想配列、又はGeneratorです。
\r
28 * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。
\r
30 * <li>{function()} onNew -
\r
31 * インスタンスが使用可能になった時に呼び出されます。
\r
33 * <li>{function(v)} onRead -
\r
34 * read関数のコールバック関数です。
\r
36 * <li>{int} v - 現在のポートの値です。</li>
\r
41 * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。
\r
43 * @return {mbedJS.PortIn}
\r
46 var CLASS=function PortIn(i_mcu,i_params,i_handler)
\r
52 if(MI.isGenerator(i_handler)){_t._gen=i_handler;}
\r
53 else if(i_handler){_t._event=i_handler}
\r
56 _t._oid=j.result[0];
\r
57 if(_t._event.onNew){_t._event.onNew();}
\r
58 if(_t._gen){_t._gen.next(_t);}
\r
63 if(MI.isHashArray(i_params)){
\r
64 pr=[i_params.port,i_params.mask];
\r
65 }else if(MI.isArray(i_params)){
\r
69 return _t._mcu.rpc(_t.RPC_NS+":_new1",pr[0]+","+pr[1],cb);
\r
71 throw new MI.MiMicException(e);
\r
77 RPC_NS:"mbedJS:PortIn",
\r
78 /** @private 最後にコールしたAPIです。*/
\r
80 /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/
\r
82 /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/
\r
84 /** @private リモートインスタンスのオブジェクトIDです。*/
\r
87 * @name mbedJS.PortIn#waitForNew
\r
89 * Generatorモードのときに使用する関数です。
\r
90 * Generatorモードの時は、yieldと併用してnew PortIn()の完了を待ちます。
\r
92 waitForNew:function PortIn_waitForNew()
\r
95 if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}
\r
96 this._lc=CLASS.waitForNew;
\r
98 throw new MI.MiMicException(e);
\r
102 * @name mbedJS.PortIn#read
\r
105 * 関数の完了時にonReadイベントが発生します。
\r
106 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
107 * @return {int|int}
\r
108 * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>
\r
109 * <p>Generatorモードの時はポートの値を返します。</p>
\r
111 read:function PortIn_read()
\r
115 if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}
\r
117 return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid,
\r
121 if(_t._event.onRead){_t._event.onRead(v);}
\r
122 if(_t._gen){_t._gen.next(v);}
\r
126 throw new MI.MiMicException(e);
\r