OSDN Git Service

mbed.jsの更新
[mimic/MiMicSDK.git] / misc / MiMicVM / mbed.js / mimic / mbed.DigitalIn.js
1 (function(){\r
2 var NS=mbedJS;\r
3 var MI=MiMicJS;\r
4 \r
5 /**\r
6  * @name mbedJS.DigitalIn\r
7  * DigitalInクラスです。\r
8  * <a href="https://mbed.org/handbook/DigitalIn">mbed::DigitalIn</a>と同等の機能を持ちます。\r
9  * @constructor\r
10  * @param {mbedJS.Mcu} i_mcu\r
11  * インスタンスをバインドするMCUオブジェクトです。\r
12  * @param {PinName} i_params\r
13  * ピンIDを指定します。\r
14  * @param {HashMap|Generator} i_event\r
15  * 非同期イベントハンドラの連想配列、又はGeneratorです。\r
16  * <p>\r
17  * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。\r
18  * <ul>\r
19  * <li>{function()} onNew -\r
20  * インスタンスが使用可能になった時に呼び出されます。\r
21  * </li>\r
22  * <li>{function(v)} onRead  -\r
23  * read関数のコールバック関数です。\r
24  *      <ul>\r
25  *              <li>{int} v - 現在のピンの値です。</li>\r
26  *      </ul>\r
27  * </li>\r
28  * <li>{function()} onMode -\r
29  * mode関数のコールバック関数です。\r
30  * </li>\r
31  * </ul>\r
32  * <p>\r
33  * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。\r
34  * <p>\r
35  * @return {mbedJS.DigitalIn}\r
36  * @example\r
37  */\r
38 var CLASS=function DigitalIn(i_mcu,i_params,i_handler)\r
39 {\r
40         try{\r
41                 var _t=this;\r
42                 _t._mcu=i_mcu;\r
43                 _t._lc=CLASS;\r
44                 if(MI.isGenerator(i_handler)){_t._gen=i_handler;}\r
45                 else if(i_handler){_t._event=i_handler}\r
46                 function cb(j)\r
47                 {\r
48                         _t._oid=j.result[0];\r
49                         if(_t._event.onNew){_t._event.onNew();}\r
50                         if(_t._gen){_t._gen.next(_t);}\r
51                         _t._lc=null;\r
52                 }\r
53                 MI.assertInt(i_params);\r
54                 return _t._mcu.rpc(_t.RPC_NS+":_new1",i_params,cb);\r
55         }catch(e){\r
56                 throw new MI.MiMicException(e);\r
57         }\r
58 }\r
59 CLASS.prototype=\r
60 {\r
61         /** @private */\r
62         RPC_NS:"mbedJS:DigitalIn",\r
63         /** @private 最後にコールしたAPIです。*/\r
64         _lc:null,\r
65         /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/\r
66         _gen:null,\r
67         /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/\r
68         _event:{},\r
69         /** @private リモートインスタンスのオブジェクトIDです。*/\r
70         _oid:null,\r
71         /**\r
72          * @name mbedJS.DigitalIn#waitForNew\r
73          * @function\r
74          * Generatorモードのときに使用する関数です。\r
75          * Generatorモードの時は、yieldと併用してnew DigitalIn()の完了を待ちます。\r
76          */\r
77         waitForNew:function DigitalIn_waitForNew()\r
78         {\r
79                 try{\r
80                         if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}\r
81                         this._lc=CLASS.waitForNew;\r
82                 }catch(e){\r
83                         throw new MI.MiMicException(e);\r
84                 }\r
85         },\r
86         /**\r
87          * @name mbedJS.DigitalIn#read\r
88          * @function\r
89          * ピンからアナログ値を読み込みます。\r
90          * 関数の完了時にonReadイベントが発生します。\r
91          * Generatorモードの時は、yieldと併用して完了を待機できます。\r
92          * @return {int|int}\r
93          * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>\r
94          * <p>Generatorモードの時はピンの値を返します。</p>\r
95          */\r
96         read:function DigitalIn_read()\r
97         {\r
98                 try{\r
99                         var _t=this;\r
100                         if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\r
101                         _t._lc=CLASS.read;\r
102                         return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid,\r
103                         function (j)\r
104                         {\r
105                                 var v=j.result[0];\r
106                                 if(_t._event.onRead){_t._event.onRead(v);}\r
107                                 if(_t._gen){_t._gen.next(v);}\r
108                                  _t._lc=null;\r
109                         }\r
110                         );\r
111                 }catch(e){\r
112                         throw new MI.MiMicException(e);\r
113                 }\r
114         },\r
115         /**\r
116          * @name mbedJS.DigitalIn#mode\r
117          * @function\r
118          * ピンモードを設定します。\r
119          * 関数の完了時にonModeイベントが発生します。\r
120          * Generatorモードの時は、yieldと併用して完了を待機できます。\r
121          * @param {PinMode} i_value\r
122          * PinModeの値です。\r
123          * @return {int|none}\r
124          * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>\r
125          */\r
126         mode:function DigitalIn_mode(i_value)\r
127         {\r
128                 try{\r
129                         var _t=this;\r
130                         if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\r
131                         _t._lc=CLASS.mode;\r
132                         MI.assertInt(i_value);\r
133                         return _t._mcu.rpc(_t.RPC_NS+":mode",_t._oid+","+i_value,\r
134                         function (j)\r
135                         {\r
136                                 var v=j.result[0];\r
137                                 if(_t._event.onMode){_t._event.onMode(v);}\r
138                                 if(_t._gen){_t._gen.next(v);}\r
139                                  _t._lc=null;\r
140                         }\r
141                         );\r
142                 }catch(e){\r
143                         throw new MI.MiMicException(e);\r
144                 }\r
145         }       \r
146 }\r
147 NS.DigitalIn=CLASS;\r
148 }());