OSDN Git Service

マニュアル整備
[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} i_event\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  * @return {mbedJS.AnalogIn}\r
42  * @example //Callback\r
43  * var mcu=new mbedJS.Mcu("ws://192.168.128.39/rpc/",\r
44  * {\r
45  *   onNew:function(){\r
46  *     var pin=new mbedJS.AnalogIn(mcu,mbedJS.PinName.A0,{\r
47  *     onNew:function(){\r
48  *       pin.read();\r
49  *     },\r
50  *     onRead:function(v)\r
51  *     {\r
52  *       pin.read_u16();\r
53  *     },\r
54  *     onRead_u16:function(v){\r
55  *       mcu.close();\r
56  *     }});\r
57  *   },\r
58  *   onClose:function(){},\r
59  *   onError:function(){}\r
60  * });\r
61  * @example //Generator\r
62  * var g=function*(){\r
63  * try{\r
64  *   var mcu=new mbedJS.Mcu("ws://192.168.128.39/rpc/",g);\r
65  *   yield mcu.waitForNew();\r
66  *   var pin=new mbedJS.AnalogIn(mcu,mbedJS.PinName.A0,g);\r
67  *   yield pin.waitForNew();\r
68  *   var v=yield pin.read();\r
69  *   v=yield pin.read_u16();\r
70  *   yield mcu.close();\r
71  * }catch(e){\r
72  *   mcu.shutdown();\r
73  * }}();\r
74  * g.next();\r
75  */\r
76 var CLASS=function AnalogIn(i_mcu,i_params,i_handler)\r
77 {\r
78         try{\r
79                 var _t=this;\r
80                 _t._mcu=i_mcu;\r
81                 _t._lc=CLASS;\r
82                 if(MI.isGenerator(i_handler)){_t._gen=i_handler;}\r
83                 else if(i_handler){_t._event=i_handler}\r
84                 function cb(j)\r
85                 {\r
86                         _t._oid=j.result[0];\r
87                         if(_t._event.onNew){_t._event.onNew();}\r
88                         if(_t._gen){_t._gen.next(_t);}\r
89                         _t._lc=null;\r
90                 }\r
91                 MI.assertInt(i_params);         \r
92                 return _t._mcu.rpc(_t.RPC_NS+":_new1",i_params,cb);\r
93         }catch(e){\r
94                 throw new MI.MiMicException(e);\r
95         }       \r
96 }\r
97 CLASS.prototype=\r
98 {\r
99         /** @private */\r
100         RPC_NS:"mbedJS:AnalogIn",\r
101         /** @private 最後にコールしたAPIです。*/\r
102         _lc:null,\r
103         /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/\r
104         _gen:null,\r
105         /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/\r
106         _event:{},\r
107         /** @private リモートインスタンスのオブジェクトIDです。*/\r
108         _oid:null,\r
109         /**\r
110          * Generatorモードのときに使用する関数です。\r
111          * Generatorモードの時は、yieldと併用してnew AnalogIn()の完了を待ちます。\r
112          * @name mbedJS.AnalogIn#waitForNew\r
113          * @function\r
114          */\r
115         waitForNew:function AnalogIn_waitForNew()\r
116         {\r
117                 try{\r
118                         if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}\r
119                         this._lc=CLASS.waitForNew;\r
120                 }catch(e){\r
121                         throw new MI.MiMicException(e);\r
122                 }\r
123         },\r
124         /**\r
125          * ピンから値を読み込みます。\r
126          * 関数の完了時にonReadイベントが発生します。\r
127          * Generatorモードの時は、yieldと併用して完了を待機できます。\r
128          * @name mbedJS.AnalogIn#read\r
129          * @function\r
130          * @return {int}\r
131          * Callbackモードの時はRPCメソッドのインデクスを返します。\r
132          * @return {float}\r
133          * Generatorモードの時はピンの値を返します。\r
134          */\r
135         read:function AnalogIn_read()\r
136         {\r
137                 try{\r
138                         var _t=this;\r
139                         if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\r
140                         _t._lc=CLASS.read;\r
141                         return _t._mcu.rpc(_t.RPC_NS+":read_fx",_t._oid,\r
142                         function (j)\r
143                         {\r
144                                 var v=j.result[0]/10000;\r
145                                 if(_t._event.onRead){_t._event.onRead(v);}\r
146                                 if(_t._gen){_t._gen.next(v);}\r
147                                  _t._lc=null;\r
148                         }\r
149                         );\r
150                 }catch(e){\r
151                         throw new MI.MiMicException(e);\r
152                 }                       \r
153         },\r
154         /**\r
155          * ピンから値を読み込みます。\r
156          * 関数の完了時にonRead_u16イベントが発生します。\r
157          * Generatorモードの時は、yieldと併用して完了を待機できます。\r
158          * @name mbedJS.AnalogIn#read_u16\r
159          * @function\r
160          * @return {int}\r
161          * Callbackモードの時はRPCメソッドのインデクスを返します。\r
162          * @return {int}\r
163          * Generatorモードの時はピンの値を返します。\r
164          */\r
165         read_u16:function AnalogIn_read_u16()\r
166         {\r
167                 try{\r
168                         var _t=this;\r
169                         if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\r
170                         _t._lc=CLASS.read_u16;\r
171                         return _t._mcu.rpc(_t.RPC_NS+":read_u16",_t._oid,\r
172                         function (j)\r
173                         {\r
174                                 var v=j.result[0];\r
175                                 if(_t._event.onRead_u16){_t._event.onRead_u16(v);}\r
176                                 if(_t._gen){_t._gen.next(v);}\r
177                                  _t._lc=null;\r
178                         }\r
179                         );\r
180                 }catch(e){\r
181                         throw new MI.MiMicException(e);\r
182                 }                       \r
183         }       \r
184 }\r
185 NS.AnalogIn=CLASS;\r
186 }());