2 * @fileOverview PwmOutクラスを定義します。
\r
10 * <a href="https://mbed.org/handbook/PwmOut">mbed::PwmOut</a>と同等の機能を持ちます。
\r
11 * @name mbedJS.PwmOut
\r
13 * @param {mbedJS.Mcu} i_mcu
\r
14 * インスタンスをバインドするMCUオブジェクトです。
\r
15 * @param {PinName} i_params
\r
17 * @param {HashMap|Generator|function} i_handler
\r
18 * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。
\r
20 * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。
\r
22 * <li>{function()} onNew -
\r
23 * インスタンスが使用可能になった時に呼び出されます。
\r
25 * <li>{function()} onWrite -
\r
26 * write関数のコールバック関数です。
\r
28 * <li>{function(v)} onRead -
\r
29 * read関数のコールバック関数です。
\r
31 * <li>{int} v - 現在のピンの値です。</li>
\r
34 * <li>{function()} onPeriod -
\r
35 * period関数のコールバック関数です。
\r
37 * <li>{function()} onPeriod_ms -
\r
38 * period_ms関数のコールバック関数です。
\r
40 * <li>{function()} onPeriod_us -
\r
41 * period_ns関数のコールバック関数です。
\r
43 * <li>{function()} onPulsewidth -
\r
44 * pulswidth関数のコールバック関数です。
\r
46 * <li>{function()} onPulsewidth_ms -
\r
47 * pulswidth_ms関数のコールバック関数です。
\r
49 * <li>{function()} onPulsewidth_us -
\r
50 * pulswidth_us関数のコールバック関数です。
\r
54 * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。
\r
57 * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。
\r
59 * @return {mbedJS.PwmOut}
\r
60 * @example //Callback
\r
61 * var mcu=new mbedJS.Mcu("192.168.128.39",
\r
64 * var pin=new mbedJS.PwmOut(mcu,mbedJS.PinName.p21,{
\r
68 * onWrite:function()
\r
72 * onRead:function(v)
\r
76 * onPeriod:function(){
\r
79 * onPeriod_ms:function(){
\r
80 * pin.period_us(10);
\r
82 * onPeriod_us:function(){
\r
83 * pin.pulsewidth(3);
\r
85 * onPulsewidth:function(){
\r
86 * pin.pulsewidth_ms(30);
\r
88 * onPulsewidth_ms:function(){
\r
89 * pin.pulsewidth_us(40);
\r
91 * onPulsewidth_us:function(){
\r
96 * onClose:function(){
\r
98 * onError:function(){
\r
101 * @example //Generator
\r
102 * var g=function*(){
\r
104 * var mcu=new mbedJS.Mcu("192.168.128.39",g);
\r
105 * yield mcu.waitForNew();
\r
106 * var pin=new mbedJS.PwmOut(mcu,mbedJS.PinName.p21,g);
\r
107 * yield pin.waitForNew();
\r
108 * yield pin.write(0.33);
\r
109 * var v=yield pin.read();
\r
110 * yield pin.period(1.0);
\r
111 * yield pin.period_ms(1);
\r
112 * yield pin.period_us(10);
\r
113 * yield pin.pulsewidth(3);
\r
114 * yield pin.pulsewidth_ms(30);
\r
115 * yield pin.pulsewidth_us(40);
\r
116 * yield mcu.close();
\r
122 var CLASS=function PwmOut(i_mcu,i_params,i_handler)
\r
128 var cb=MI._initHandler.call(_t,i_handler);
\r
129 MI.assertInt(i_params);
\r
130 _t._mcu.rpc(_t.RPC_NS+":_new1",i_params,
\r
133 _t._oid=j.result[0];
\r
135 if(_t._gen){_t._gen.next(_t);}
\r
140 throw new MI.MiMicException(e);
\r
146 RPC_NS:"mbedJS:PwmOut",
\r
147 /** @private 最後にコールしたAPIです。*/
\r
149 /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/
\r
151 /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/
\r
153 /** @private リモートインスタンスのオブジェクトIDです。*/
\r
156 * Generatorモードのときに使用する関数です。
\r
157 * Generatorモードの時は、yieldと併用してnew PwmOut()の完了を待ちます。
\r
158 * @name mbedJS.PwmOut#waitForNew
\r
161 waitForNew:function PwmOut_waitForNew()
\r
164 if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}
\r
165 this._lc=CLASS.waitForNew;
\r
167 throw new MI.MiMicException(e);
\r
172 * 関数の完了時にonWriteイベントが発生します。
\r
173 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
174 * @name mbedJS.PwmOut#write
\r
176 * @param {float} i_value
\r
178 * @return {int|none}
\r
179 * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>
\r
180 * <p>Generatorモードの時は戻り値はありません。</p>
\r
182 write:function PwmOut_write(i_value)
\r
186 var cb=MI._getCb(arguments,_t._event.onWrite);
\r
187 MI._assertYield.call(_t);
\r
188 _t._lc=CLASS.write;
\r
189 MI.assertNumber(i_value);
\r
190 return _t._mcu.rpc(_t.RPC_NS+":write_fx",_t._oid+","+Math.round(i_value*10000),
\r
193 if(_t._gen){_t._gen.next();}
\r
197 throw new MI.MiMicException(e);
\r
202 * 関数の完了時にonReadイベントが発生します。
\r
203 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
204 * @name mbedJS.PwmOut#read
\r
206 * @return {int|float}
\r
207 * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>
\r
208 * <p>Generatorモードの時はピンの値を返します。</p>
\r
210 read:function PwmOut_read()
\r
214 var cb=MI._getCb(arguments,_t._event.onRead);
\r
215 MI._assertYield.call(_t);
\r
217 return _t._mcu.rpc(_t.RPC_NS+":read_fx",_t._oid,
\r
220 var v=j.result[0]/10000;
\r
222 if(_t._gen){_t._gen.next(v);}
\r
226 throw new MI.MiMicException(e);
\r
231 * 関数の完了時にonPeriodイベントが発生します。
\r
232 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
233 * @name mbedJS.PwmOut#period
\r
235 * @param {float} i_value
\r
237 * @return {int|none}
\r
238 * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>
\r
239 * <p>Generatorモードの時は戻り値はありません。</p>
\r
241 period:function PwmOut_period(i_value)
\r
245 var cb=MI._getCb(arguments,_t._event.onPeriod);
\r
246 MI._assertYield.call(_t);
\r
247 _t._lc=CLASS.period;
\r
248 MI.assertInt(i_value);
\r
249 return _t._mcu.rpc(_t.RPC_NS+":period_fx",_t._oid+","+Math.round(i_value*10000),
\r
252 if(_t._gen){_t._gen.next();}
\r
256 throw new MI.MiMicException(e);
\r
261 * 関数の完了時にonPeriod_msイベントが発生します。
\r
262 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
263 * @name mbedJS.PwmOut#period_ms
\r
265 * @param {int} i_value
\r
267 * @return {int|none}
\r
268 * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>
\r
269 * <p>Generatorモードの時は戻り値はありません。</p>
\r
271 period_ms:function PwmOut_period_ms(i_value)
\r
275 var cb=MI._getCb(arguments,_t._event.onPeriod_ms);
\r
276 MI._assertYield.call(_t);
\r
277 _t._lc=CLASS.period_ms;
\r
278 MI.assertInt(i_value);
\r
279 return _t._mcu.rpc(_t.RPC_NS+":period_ms",_t._oid+","+i_value,
\r
282 if(_t._gen){_t._gen.next();}
\r
286 throw new MI.MiMicException(e);
\r
291 * 関数の完了時にonPeriod_usイベントが発生します。
\r
292 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
293 * @name mbedJS.PwmOut#period_us
\r
295 * @param {int} i_value
\r
297 * @return {int|none}
\r
298 * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>
\r
299 * <p>Generatorモードの時は戻り値はありません。</p>
\r
301 period_us:function PwmOut_period_us(i_value)
\r
305 var cb=MI._getCb(arguments,_t._event.onPeriod_us);
\r
306 MI._assertYield.call(_t);
\r
307 _t._lc=CLASS.period_us;
\r
308 MI.assertInt(i_value);
\r
309 return _t._mcu.rpc(_t.RPC_NS+":period_us",_t._oid+","+i_value,
\r
312 if(_t._gen){_t._gen.next();}
\r
316 throw new MI.MiMicException(e);
\r
321 * 関数の完了時にonPeriodイベントが発生します。
\r
322 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
323 * @name mbedJS.PwmOut#pulsewidth
\r
325 * @param {float} i_value
\r
327 * @return {int|none}
\r
328 * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>
\r
329 * <p>Generatorモードの時は戻り値はありません。</p>
\r
331 pulsewidth:function PwmOut_pulsewidth(i_value)
\r
335 var cb=MI._getCb(arguments,_t._event.onPulsewidth);
\r
336 MI._assertYield.call(_t);
\r
337 _t._lc=CLASS.pulsewidth;
\r
338 MI.assertInt(i_value);
\r
339 return _t._mcu.rpc(_t.RPC_NS+":pulsewidth_fx",_t._oid+","+Math.round(i_value*10000),
\r
342 if(_t._gen){_t._gen.next();}
\r
346 throw new MI.MiMicException(e);
\r
351 * 関数の完了時にonPulsewidth_msイベントが発生します。
\r
352 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
353 * @name mbedJS.PwmOut#pulsewidth_ms
\r
355 * @param {int} i_value
\r
358 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
360 pulsewidth_ms:function PwmOut_pulsewidth_ms(i_value)
\r
364 var cb=MI._getCb(arguments,_t._event.onPulsewidth_ms);
\r
365 MI._assertYield.call(_t);
\r
366 _t._lc=CLASS.pulsewidth_ms;
\r
367 MI.assertInt(i_value);
\r
368 return _t._mcu.rpc(_t.RPC_NS+":pulsewidth_ms",_t._oid+","+i_value,
\r
371 if(_t._gen){_t._gen.next();}
\r
376 throw new MI.MiMicException(e);
\r
381 * 関数の完了時にonPulsewidth_usイベントが発生します。
\r
382 * Generatorモードの時は、yieldと併用して完了を待機できます。
\r
383 * @name mbedJS.PwmOut#pulsewidth_us
\r
385 * @param {int} i_value
\r
388 * Callbackモードの時はRPCメソッドのインデクスを返します。
\r
390 pulsewidth_us:function PwmOut_pulsewidth_us(i_value)
\r
394 var cb=MI._getCb(arguments,_t._event.onPulsewidth_us);
\r
395 MI._assertYield.call(_t);
\r
396 _t._lc=CLASS.pulsewidth_us;
\r
397 MI.assertInt(i_value);
\r
398 return _t._mcu.rpc(_t.RPC_NS+":pulsewidth_us",_t._oid+","+i_value,
\r
401 if(_t._gen){_t._gen.next();}
\r
406 throw new MI.MiMicException(e);
\r
410 * MCUに生成されているオブジェクトを破棄します。
\r
411 * @name mbedJS.PwmOut#dispose
\r
414 dispose:function PwmOut_dispose()
\r
416 return this._mcu._dispose.apply(this,arguments);
\r