OSDN Git Service

c689b4e3eb84fc2ac0cdcb8c8a3d13ae6cb05ec6
[mimic/MiMicSDK.git] / misc / mbedJS / mbddJS.API / mbedJS / mbed.AnalogIn.js
1 /**\r
2  * @fileOverview AnalogInクラスを定義します。\r
3  */\r
4 (function(){\r
5 var NS=mbedJS;\r
6 var MI=MiMicJS;\r
7 \r
8 /**\r
9  * AnalogInクラスです。\r
10  * <a href="https://mbed.org/handbook/AnalogIn">mbed::AnalogIn</a>と同等の機能を持ちます。\r
11  * @constructor\r
12  * @name mbedJS.AnalogIn\r
13  * @param {mbedJS.Mcu} i_mcu\r
14  * インスタンスをバインドするMCUオブジェクトです。\r
15  * @param {PinName} i_params\r
16  * ピンIDを指定します。\r
17  * @param {HashMap|Generator|function} i_handler\r
18  * 非同期イベントハンドラの連想配列、Generator、コールバック関数の何れかを指定します。\r
19  * <p>\r
20  * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。\r
21  * <ul>\r
22  * <li>{function()} onNew -\r
23  * インスタンスが使用可能になった時に呼び出されます。\r
24  * </li>\r
25  * <li>{function(v)} onRead -\r
26  * read関数のコールバック関数です。\r
27  *      <ul>\r
28  *              <li>{int} v - 現在のピンの値です。</li>\r
29  *      </ul>\r
30  * </li>\r
31  * <li>{function(v)} onRead_u16 -\r
32  * read_u16関数のコールバック関数です。\r
33  *      <ul>\r
34  *              <li>{int} v - 現在のピンの値です。</li>\r
35  *      </ul>\r
36  * </li>\r
37  * </ul>\r
38  * <p>\r
39  * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。\r
40  * </p>\r
41  * <p>\r
42  * コールバック関数を指定した場合、RPCが完了したときに呼び出されます。メンバ関数のイベントハンドラは個別に設定する必要があります。\r
43  * </p>\r
44  * @return {mbedJS.AnalogIn}\r
45  * @example //Callback\r
46  * var mcu=new mbedJS.Mcu("192.168.128.39",\r
47  * {\r
48  *   onNew:function(){\r
49  *     var pin=new mbedJS.AnalogIn(mcu,mbedJS.PinName.A0,{\r
50  *     onNew:function(){\r
51  *       pin.read();\r
52  *     },\r
53  *     onRead:function(v)\r
54  *     {\r
55  *       pin.read_u16();\r
56  *     },\r
57  *     onRead_u16:function(v){\r
58  *       mcu.close();\r
59  *     }});\r
60  *   },\r
61  *   onClose:function(){},\r
62  *   onError:function(){}\r
63  * });\r
64  * @example //Generator\r
65  * var g=function*(){\r
66  * try{\r
67  *   var mcu=new mbedJS.Mcu("192.168.128.39",g);\r
68  *   yield mcu.waitForNew();\r
69  *   var pin=new mbedJS.AnalogIn(mcu,mbedJS.PinName.A0,g);\r
70  *   yield pin.waitForNew();\r
71  *   var v=yield pin.read();\r
72  *   v=yield pin.read_u16();\r
73  *   yield mcu.close();\r
74  * }catch(e){\r
75  *   mcu.shutdown();\r
76  * }}();\r
77  * g.next();\r
78  */\r
79 var CLASS=function AnalogIn(i_mcu,i_params,i_handler)\r
80 {\r
81         try{\r
82                 var _t=this;\r
83                 _t._mcu=i_mcu;\r
84                 _t._lc=CLASS;\r
85                 var cb=MI._initHandler.call(_t,i_handler);\r
86                 MI.assertInt(i_params);         \r
87                 _t._mcu.rpc(_t.RPC_NS+":_new1",i_params,\r
88                         function(j)\r
89                         {\r
90                                 _t._oid=j.result[0];\r
91                                 if(cb){cb();}\r
92                                 if(_t._gen){_t._gen.next(_t);}\r
93                                 _t._lc=null;\r
94                         }\r
95                 );\r
96         }catch(e){\r
97                 throw new MI.MiMicException(e);\r
98         }       \r
99 }\r
100 CLASS.prototype=\r
101 {\r
102         /** @private */\r
103         RPC_NS:"mbedJS:AnalogIn",\r
104         /** @private 最後にコールしたAPIです。*/\r
105         _lc:null,\r
106         /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/\r
107         _gen:null,\r
108         /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/\r
109         _event:{},\r
110         /** @private リモートインスタンスのオブジェクトIDです。*/\r
111         _oid:null,\r
112         /**\r
113          * Generatorモードのときに使用する関数です。\r
114          * Generatorモードの時は、yieldと併用してnew AnalogIn()の完了を待ちます。\r
115          * @name mbedJS.AnalogIn#waitForNew\r
116          * @function\r
117          */\r
118         waitForNew:function AnalogIn_waitForNew()\r
119         {\r
120                 try{\r
121                         if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}\r
122                         this._lc=CLASS.waitForNew;\r
123                 }catch(e){\r
124                         throw new MI.MiMicException(e);\r
125                 }\r
126         },\r
127         /**\r
128          * ピンから値を読み込みます。\r
129          * 関数の完了時にonReadイベントが発生します。\r
130          * Generatorモードの時は、yieldと併用して完了を待機できます。\r
131          * @name mbedJS.AnalogIn#read\r
132          * @function\r
133          * @return {int}\r
134          * Callbackモードの時はRPCメソッドのインデクスを返します。\r
135          * @return {float}\r
136          * Generatorモードの時はピンの値を返します。\r
137          */\r
138         read:function AnalogIn_read()\r
139         {\r
140                 try{\r
141                         var _t=this;\r
142                         var cb=MI._getCb(arguments,_t._event.onRead);\r
143                         MI._assertYield.call(_t);\r
144                         _t._lc=CLASS.read;\r
145                         return _t._mcu.rpc(_t.RPC_NS+":read_fx",_t._oid,\r
146                                 function (j)\r
147                                 {\r
148                                         var v=j.result[0]/10000;\r
149                                         if(cb){cb(v);}\r
150                                         if(_t._gen){_t._gen.next(v);}\r
151                                          _t._lc=null;\r
152                                 }\r
153                         );\r
154                 }catch(e){\r
155                         throw new MI.MiMicException(e);\r
156                 }                       \r
157         },\r
158         /**\r
159          * ピンから値を読み込みます。\r
160          * 関数の完了時にonRead_u16イベントが発生します。\r
161          * Generatorモードの時は、yieldと併用して完了を待機できます。\r
162          * @name mbedJS.AnalogIn#read_u16\r
163          * @function\r
164          * @return {int}\r
165          * Callbackモードの時はRPCメソッドのインデクスを返します。\r
166          * @return {int}\r
167          * Generatorモードの時はピンの値を返します。\r
168          */\r
169         read_u16:function AnalogIn_read_u16()\r
170         {\r
171                 try{\r
172                         var _t=this;\r
173                         var cb=MI._getCb(arguments,_t._event.onRead_u16);\r
174                         MI._assertYield.call(_t);\r
175                         _t._lc=CLASS.read_u16;\r
176                         return _t._mcu.rpc(_t.RPC_NS+":read_u16",_t._oid,\r
177                                 function (j)\r
178                                 {\r
179                                         var v=j.result[0];\r
180                                         if(cb){cb(v);}\r
181                                         if(_t._gen){_t._gen.next(v);}\r
182                                          _t._lc=null;\r
183                                 }\r
184                         );\r
185                 }catch(e){\r
186                         throw new MI.MiMicException(e);\r
187                 }                       \r
188         },\r
189         /**\r
190          * MCUに生成されているオブジェクトを破棄します。\r
191          * @name mbedJS.AnalogIn#dispose\r
192          * @function\r
193          */\r
194         dispose:function AnalogIn_dispose()\r
195         {\r
196                 return this._mcu._dispose.apply(this,arguments);\r
197         }\r
198 \r
199 }\r
200 NS.AnalogIn=CLASS;\r
201 }());