2 * @fileOverview BusInクラスを定義します。
\r
10 * <a href="https://mbed.org/handbook/BusIn">mbed::BusIn</a>と同等の機能を持ちます。
\r
11 * @name mbedJS.BusIn
\r
13 * @param {mbedJS.Mcu} i_mcu
\r
14 * インスタンスをバインドするMCUオブジェクトです。
\r
15 * @param {[PinName...]} i_params
\r
16 * ピンIDの配列を指定します。要素数の最大値は16です。
\r
17 * @param {HashMap|Generator|function} i_handler
\r
18 * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。
\r
20 * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。
\r
22 * <li>{function()} onNew -
\r
23 * インスタンスが使用可能になった時に呼び出されます。
\r
25 * <li>{function(v)} onRead -
\r
26 * read関数のコールバック関数です。
\r
28 * <li>{int} v - 現在のピンの値です。</li>
\r
31 * <li>{function()} onMode -
\r
32 * mode関数のコールバック関数です。
\r
36 * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。
\r
39 * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。
\r
41 * @return {mbedJS.BusIn}
\r
42 * @example //Callback
\r
43 * var mcu=new mbedJS.Mcu("192.168.128.39",
\r
46 * var pin=new mbedJS.BusIn(mcu,[mbedJS.PinName.P0_21,mbedJS.PinName.P0_22],{
\r
50 * onRead:function(v)
\r
52 * pin.mode(mbedJS.PinMode.PullDown);
\r
54 * onMode:function(v){
\r
58 * onClose:function(){
\r
60 * onError:function(){
\r
63 * @example //Generator
\r
64 * var g=function*(){
\r
66 * var mcu=new mbedJS.Mcu("192.168.128.39",g);
\r
67 * yield mcu.waitForNew();
\r
68 * var bus=new mbedJS.BusIn(mcu,[mbedJS.PinName.P0_21,mbedJS.PinName.P0_22],g);
\r
69 * yield bus.waitForNew();
\r
70 * var v=yield bus.read();
\r
71 * v=yield bus.mode(mbedJS.PinMode.PullUp);
\r
72 * yield mcu.close();
\r
78 var CLASS=function BusIn(i_mcu,i_params,i_handler)
\r
84 var cb=MI._initHandler.call(_t,i_handler);
\r
87 if(ap.length<1 ||ap.length>16){
\r
88 throw new MI.MiMicException(MI.NG_INVALID_ARG);
\r
94 for(;i<i_params.length;i++){
\r
98 pins+=","+NS.PinName.NC;
\r
100 _t._mcu.rpc(_t.RPC_NS+":_new1",pins,
\r
103 _t._oid=j.result[0];
\r
105 if(_t._gen){_t._gen.next(_t);}
\r
110 throw new MI.MiMicException(e);
\r
116 RPC_NS:"mbedJS:BusIn",
\r
117 /** @private 最後にコールしたAPIです。*/
\r
119 /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/
\r
121 /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/
\r
123 /** @private リモートインスタンスのオブジェクトIDです。*/
\r
126 * Generatorモードのときに使用する関数です。
\r
127 * Generatorモードの時は、yieldと併用してnew BusIn()の完了を待ちます。
\r
128 * @name mbedJS.BusIn#waitForNew
\r
131 waitForNew:function BusIn_waitForNew()
\r
134 if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}
\r
135 this._lc=CLASS.waitForNew;
\r
137 throw new MI.MiMicException(e);
\r
142 * 関数の完了時にonReadイベントが発生します。
\r
143 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
144 * @name mbedJS.BusIn#read
\r
147 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
149 * Generatorモードの時はピンの値を返します。
\r
151 read:function BusIn_read()
\r
155 var cb=MI._getCb(arguments,_t._event.onRead);
\r
156 MI._assertYield.call(_t);
\r
158 return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid,
\r
163 if(_t._gen){_t._gen.next(v);}
\r
168 throw new MI.MiMicException(e);
\r
173 * 関数の完了時にonModeイベントが発生します。
\r
174 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
175 * @name mbedJS.BusIn#mode
\r
177 * @param {PinMode} i_value
\r
180 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
182 mode:function BusIn_mode(i_value)
\r
186 var cb=MI._getCb(arguments,_t._event.onMode);
\r
187 MI._assertYield.call(_t);
\r
188 MI.assertInt(i_value);
\r
189 return _t._mcu.rpc(_t.RPC_NS+":mode",_t._oid+","+i_value,
\r
194 if(_t._gen){_t._gen.next(v);}
\r
199 throw new MI.MiMicException(e);
\r
203 * MCUに生成されているオブジェクトを破棄します。
\r
204 * @name mbedJS.BusIn#dispose
\r
207 dispose:function BusIn_dispose()
\r
209 return this._mcu._dispose.apply(this,arguments);
\r