--- /dev/null
+(function(){\r
+var NS=mbedJS;\r
+var MI=MiMicJS;\r
+\r
+/**\r
+ * @name mbedJS.PortIn\r
+ * PortInクラスです。\r
+ * <a href="https://mbed.org/handbook/PortIn">mbed::PortIn</a>と同等の機能を持ちます。\r
+ * @constructor\r
+ * @param {mbedJS.Mcu} i_mcu\r
+ * インスタンスをバインドするMCUオブジェクトです。\r
+ * @param {HashMap|Array} i_params\r
+ * <p>\r
+ * HashNapの場合は以下のメンバを指定できます。\r
+ * <ul>\r
+ * <li>{PortName} port -\r
+ * ポート名を指定します。</li>\r
+ * <li>{uint32} mask -\r
+ * ポートマスクを指定します。</li>\r
+ * </ul>\r
+ * </p>\r
+ * <p>配列の場合は次の順番でパラメータを指定します。\r
+ * <pre>{port,mask}</pre>\r
+ * </p>\r
+ * @param {HashMap|Generator} i_event\r
+ * 非同期イベントハンドラの連想配列、又はGeneratorです。\r
+ * <p>\r
+ * 非同期イベントハンドラの場合、関数はイベントハンドラで結果を通知します。\r
+ * <ul>\r
+ * <li>{function()} onNew -\r
+ * インスタンスが使用可能になった時に呼び出されます。\r
+ * </li>\r
+ * <li>{function(v)} onRead -\r
+ * read関数のコールバック関数です。\r
+ * <ul>\r
+ * <li>{int} v - 現在のポートの値です。</li>\r
+ * </ul>\r
+ * </li>\r
+ * </ul>\r
+ * <p>\r
+ * Generatorを指定した場合、コールバック関数の引数はyiledの戻り値として取得できます。\r
+ * <p>\r
+ * @return {mbedJS.PortIn}\r
+ * @example\r
+ */\r
+var CLASS=function PortIn(i_mcu,i_params,i_handler)\r
+{\r
+ try{\r
+ var _t=this;\r
+ _t._mcu=i_mcu;\r
+ _t._lc=CLASS;\r
+ if(MI.isGenerator(i_handler)){_t._gen=i_handler;}\r
+ else if(i_handler){_t._event=i_handler}\r
+ function cb(j)\r
+ {\r
+ _t._oid=j.result[0];\r
+ if(_t._event.onNew){_t._event.onNew();}\r
+ if(_t._gen){_t._gen.next(_t);}\r
+ _t._lc=null;\r
+ }\r
+ //引数の正規化\r
+ var pr;\r
+ if(MI.isHashArray(i_params)){\r
+ pr=[i_params.port,i_params.mask];\r
+ }else if(MI.isArray(i_params)){\r
+ pr=i_params;\r
+ }\r
+ MI.assertInt(pr);\r
+ return _t._mcu.rpc(_t.RPC_NS+":_new1",pr[0]+","+pr[1],cb);\r
+ }catch(e){\r
+ throw new MI.MiMicException(e);\r
+ } \r
+}\r
+CLASS.prototype=\r
+{\r
+ /** @private */\r
+ RPC_NS:"mbedJS:PortIn",\r
+ /** @private 最後にコールしたAPIです。*/\r
+ _lc:null,\r
+ /** @private Generatorモードの場合にGeneratorオブジェクトを保持します。*/\r
+ _gen:null,\r
+ /** @private コールバック関数の連想配列です。要素はコンストラクタを参照してください。*/\r
+ _event:{},\r
+ /** @private リモートインスタンスのオブジェクトIDです。*/\r
+ _oid:null,\r
+ /**\r
+ * @name mbedJS.PortIn#waitForNew\r
+ * @function\r
+ * Generatorモードのときに使用する関数です。\r
+ * Generatorモードの時は、yieldと併用してnew PortIn()の完了を待ちます。\r
+ */\r
+ waitForNew:function PortIn_waitForNew()\r
+ {\r
+ try{\r
+ if(this._lc!=CLASS){throw new MI.MiMicException(MI.Error.NG_ILLEGAL_CALL);}\r
+ this._lc=CLASS.waitForNew;\r
+ }catch(e){\r
+ throw new MI.MiMicException(e);\r
+ }\r
+ },\r
+ /**\r
+ * @name mbedJS.PortIn#read\r
+ * @function\r
+ * ピンから値を読み込みます。\r
+ * 関数の完了時にonReadイベントが発生します。\r
+ * Generatorモードの時は、yieldと併用して完了を待機できます。\r
+ * @return {int|int}\r
+ * <p>Callbackモードの時はRPCメソッドのインデクスを返します。</p>\r
+ * <p>Generatorモードの時はポートの値を返します。</p>\r
+ */\r
+ read:function PortIn_read()\r
+ {\r
+ try{\r
+ var _t=this;\r
+ if(this._gen && this._lc){throw new MI.MiMicException(MI.Error.NG_YIELD_NOT_COMPLETED);}\r
+ _t._lc=CLASS.read;\r
+ return _t._mcu.rpc(_t.RPC_NS+":read",_t._oid,\r
+ function (j)\r
+ {\r
+ var v=j.result[0];\r
+ if(_t._event.onRead){_t._event.onRead(v);}\r
+ if(_t._gen){_t._gen.next(v);}\r
+ _t._lc=null;\r
+ });\r
+ }catch(e){\r
+ throw new MI.MiMicException(e);\r
+ } \r
+ } \r
+}\r
+NS.PortIn=CLASS;\r
+}());
\ No newline at end of file