OSDN Git Service

update ticket #30504
authornyatla <nyatla@47198e57-cb75-475f-84c4-a814cd6f29e0>
Tue, 15 Jan 2013 12:50:06 +0000 (12:50 +0000)
committernyatla <nyatla@47198e57-cb75-475f-84c4-a814cd6f29e0>
Tue, 15 Jan 2013 12:50:06 +0000 (12:50 +0000)
git-svn-id: http://svn.osdn.jp/svnroot/mimic/trunk@182 47198e57-cb75-475f-84c4-a814cd6f29e0

misc/MiMicVM/api.js/LPC1769.All.js
misc/MiMicVM/api.js/LPC1769.Pin.js
misc/MiMicVM/api.js/LPCXPresso1769.All.js
misc/MiMicVM/api.js/MbedM3.All.js
misc/MiMicVM/api.js/MiMicCore.js
misc/MiMicVM/api.js/demo/pwm.html
misc/MiMicVM/tool/C0test.html

index 4d6183b..7e1a608 100644 (file)
@@ -1598,7 +1598,7 @@ DEV.Pin.prototype=
         * <pre>{sel,mode,od}</pre>\r
         * <ul>\r
         * <li>sel:int - 2bitのint値。 PINSEL? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
-        * <li>mode:int - 1bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
+        * <li>mode:int - 2bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
         * <li>od:int - 1bitのbit値 PINMODE_OD? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
         * </ul>\r
         * @example\r
@@ -3416,7 +3416,7 @@ DEV.Dac.prototype=
         * Dac機能を割り当てるPINの識別子である。値は、LPC1769.Pn[m]のメンバ変数である。\r
         * @param {associative array} i_opt\r
         * DacPinのコンストラクタに渡すオプション値。省略時はundefinedである。詳細はLPC1769.DacPinを参照。\r
-        * @return {object as LPC1769.AdcPin}\r
+        * @return {object as LPC1769.DacPin}\r
         * LPC1769.DacPinクラスのオブジェクトである。\r
         * @example\r
         * //create DacPin\r
@@ -3462,9 +3462,9 @@ DEV.Dac.prototype=
        },\r
        /**\r
         * DACRのBiasフィールドの値を更新するBC\r
-        @param i_val\r
-        0 or 1\r
-        @private\r
+        @param i_val\r
+        0 or 1\r
+        @private\r
         */\r
        BCF_setBias:function BCF_setBias(i_mask,i_val,i_db)\r
        {\r
@@ -3476,6 +3476,7 @@ DEV.Dac.prototype=
        },\r
        /**\r
         * DACRのVALUEフィールドを更新するBC
+        * @private\r
         */\r
        BCF_setValue:function BCF_setValue(i_val,i_db)\r
        {\r
@@ -3610,7 +3611,7 @@ DEV.DacPort.prototype=
        },\r
        /**\r
         * ポートへ値を出力する。\r
-        * @name LPC1769.AdcPort#setValues\r
+        * @name LPC1769.DacPort#setValues\r
         * @function\r
         * @param {array[int]} i_values\r
         * 10bitのDA変換値の配列である。値の意味は、UM10360 Chapter 30: LPC17xx Digital-to-Analog Converter (DAC)を参照。\r
@@ -3646,7 +3647,7 @@ DEV.DacPort.prototype=
  * Dacペリフェラルオブジェクトにピン識別子で指定されたピンを関連付けて、DA機能を持つピンを生成する。\r
  * 関数は、ピン識別子を元に、そのピンがDA機能に接続できるかを調べる。ピンにDA機能を割り当てられない場合、例外が発生する。どのピンにDA機能が割り当てられるかは、MCUのスペックシートを参照すること。\r
  * @constructor\r
- * @name LPC1769.AdcPin\r
+ * @name LPC1769.DacPin\r
  * @param {object as LPC1769.Dac} i_dac\r
  * インスタンスを結びつけるDacオブジェクト。\r
  * @param {object as pin識別子} i_pin\r
index cf10ee0..d3a7d8f 100644 (file)
@@ -56,7 +56,7 @@ DEV.Pin.prototype=
         * <pre>{sel,mode,od}</pre>\r
         * <ul>\r
         * <li>sel:int - 2bitのint値。 PINSEL? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
-        * <li>mode:int - 1bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
+        * <li>mode:int - 2bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
         * <li>od:int - 1bitのbit値 PINMODE_OD? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
         * </ul>\r
         * @example\r
index 047f953..e4797c3 100644 (file)
@@ -1598,7 +1598,7 @@ DEV.Pin.prototype=
         * <pre>{sel,mode,od}</pre>\r
         * <ul>\r
         * <li>sel:int - 2bitのint値。 PINSEL? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
-        * <li>mode:int - 1bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
+        * <li>mode:int - 2bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
         * <li>od:int - 1bitのbit値 PINMODE_OD? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
         * </ul>\r
         * @example\r
@@ -3416,7 +3416,7 @@ DEV.Dac.prototype=
         * Dac機能を割り当てるPINの識別子である。値は、LPC1769.Pn[m]のメンバ変数である。\r
         * @param {associative array} i_opt\r
         * DacPinのコンストラクタに渡すオプション値。省略時はundefinedである。詳細はLPC1769.DacPinを参照。\r
-        * @return {object as LPC1769.AdcPin}\r
+        * @return {object as LPC1769.DacPin}\r
         * LPC1769.DacPinクラスのオブジェクトである。\r
         * @example\r
         * //create DacPin\r
@@ -3462,9 +3462,9 @@ DEV.Dac.prototype=
        },\r
        /**\r
         * DACRのBiasフィールドの値を更新するBC\r
-        @param i_val\r
-        0 or 1\r
-        @private\r
+        @param i_val\r
+        0 or 1\r
+        @private\r
         */\r
        BCF_setBias:function BCF_setBias(i_mask,i_val,i_db)\r
        {\r
@@ -3476,6 +3476,7 @@ DEV.Dac.prototype=
        },\r
        /**\r
         * DACRのVALUEフィールドを更新するBC
+        * @private\r
         */\r
        BCF_setValue:function BCF_setValue(i_val,i_db)\r
        {\r
@@ -3610,7 +3611,7 @@ DEV.DacPort.prototype=
        },\r
        /**\r
         * ポートへ値を出力する。\r
-        * @name LPC1769.AdcPort#setValues\r
+        * @name LPC1769.DacPort#setValues\r
         * @function\r
         * @param {array[int]} i_values\r
         * 10bitのDA変換値の配列である。値の意味は、UM10360 Chapter 30: LPC17xx Digital-to-Analog Converter (DAC)を参照。\r
@@ -3646,7 +3647,7 @@ DEV.DacPort.prototype=
  * Dacペリフェラルオブジェクトにピン識別子で指定されたピンを関連付けて、DA機能を持つピンを生成する。\r
  * 関数は、ピン識別子を元に、そのピンがDA機能に接続できるかを調べる。ピンにDA機能を割り当てられない場合、例外が発生する。どのピンにDA機能が割り当てられるかは、MCUのスペックシートを参照すること。\r
  * @constructor\r
- * @name LPC1769.AdcPin\r
+ * @name LPC1769.DacPin\r
  * @param {object as LPC1769.Dac} i_dac\r
  * インスタンスを結びつけるDacオブジェクト。\r
  * @param {object as pin識別子} i_pin\r
index 5e80ab0..5a0ed6e 100644 (file)
@@ -1598,7 +1598,7 @@ DEV.Pin.prototype=
         * <pre>{sel,mode,od}</pre>\r
         * <ul>\r
         * <li>sel:int - 2bitのint値。 PINSEL? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
-        * <li>mode:int - 1bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
+        * <li>mode:int - 2bitのint値。PINMODE? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
         * <li>od:int - 1bitのbit値 PINMODE_OD? レジスタに指定する値。UM10360 Chapter8.LPC17xx Pin connect block を参照。</li>\r
         * </ul>\r
         * @example\r
@@ -3416,7 +3416,7 @@ DEV.Dac.prototype=
         * Dac機能を割り当てるPINの識別子である。値は、LPC1769.Pn[m]のメンバ変数である。\r
         * @param {associative array} i_opt\r
         * DacPinのコンストラクタに渡すオプション値。省略時はundefinedである。詳細はLPC1769.DacPinを参照。\r
-        * @return {object as LPC1769.AdcPin}\r
+        * @return {object as LPC1769.DacPin}\r
         * LPC1769.DacPinクラスのオブジェクトである。\r
         * @example\r
         * //create DacPin\r
@@ -3462,9 +3462,9 @@ DEV.Dac.prototype=
        },\r
        /**\r
         * DACRのBiasフィールドの値を更新するBC\r
-        @param i_val\r
-        0 or 1\r
-        @private\r
+        @param i_val\r
+        0 or 1\r
+        @private\r
         */\r
        BCF_setBias:function BCF_setBias(i_mask,i_val,i_db)\r
        {\r
@@ -3476,6 +3476,7 @@ DEV.Dac.prototype=
        },\r
        /**\r
         * DACRのVALUEフィールドを更新するBC
+        * @private\r
         */\r
        BCF_setValue:function BCF_setValue(i_val,i_db)\r
        {\r
@@ -3610,7 +3611,7 @@ DEV.DacPort.prototype=
        },\r
        /**\r
         * ポートへ値を出力する。\r
-        * @name LPC1769.AdcPort#setValues\r
+        * @name LPC1769.DacPort#setValues\r
         * @function\r
         * @param {array[int]} i_values\r
         * 10bitのDA変換値の配列である。値の意味は、UM10360 Chapter 30: LPC17xx Digital-to-Analog Converter (DAC)を参照。\r
@@ -3646,7 +3647,7 @@ DEV.DacPort.prototype=
  * Dacペリフェラルオブジェクトにピン識別子で指定されたピンを関連付けて、DA機能を持つピンを生成する。\r
  * 関数は、ピン識別子を元に、そのピンがDA機能に接続できるかを調べる。ピンにDA機能を割り当てられない場合、例外が発生する。どのピンにDA機能が割り当てられるかは、MCUのスペックシートを参照すること。\r
  * @constructor\r
- * @name LPC1769.AdcPin\r
+ * @name LPC1769.DacPin\r
  * @param {object as LPC1769.Dac} i_dac\r
  * インスタンスを結びつけるDacオブジェクト。\r
  * @param {object as pin識別子} i_pin\r
index 3d60783..79a51d3 100644 (file)
@@ -9,6 +9,17 @@
 var MiMicLib=\r
 {\r
        /**\r
+        * MiMicJsAPIのバージョン文字列。\r
+        */\r
+       VERSION:"MiMicJsAPI/1.0.1",\r
+       /**\r
+        * 現在の時刻を返す\r
+        * @returns\r
+        */\r
+       getNow:function getNow(){\r
+               return (new Date()).getTime();\r
+       },\r
+       /**\r
         * aがundefinedであるかを真偽値で返す。\r
         * @function\r
         * @param {object} a\r
@@ -319,7 +330,11 @@ var MiMicRemoteMcuInterface;
        MiMicRemoteMcuInterface.prototype=\r
        {\r
                _mimic_host:null,\r
-               _keep_alive:null,       \r
+               _keep_alive:null,\r
+               /**\r
+                * 最後にXhrレスポンスを得た時刻\r
+                */\r
+               _last_xhr_res_time:0,\r
                /**\r
                 * XmlHttpRequestを実行する。\r
                 * @private\r
@@ -336,14 +351,20 @@ var MiMicRemoteMcuInterface;
                        if(i_async){\r
                                xhr.onreadystatechange = function(){\r
                                                if (xhr.readyState == 4){\r
-                                                       i_callback(xhr);        \r
+                                               //最終受信時刻を記録\r
+                                                       this._last_xhr_res_time=MiMicLib.getNow();\r
+                                                       i_callback(xhr);\r
                                                }\r
                                        }\r
-                               }\r
+                       }\r
                        xhr.open("GET",i_url,i_async);\r
                        prog=1;\r
                        xhr.send(null); \r
-                       prog=2;\r
+                       if(!i_async){\r
+                               //最終受信時刻を記録\r
+                                       this._last_xhr_res_time=MiMicLib.getNow();\r
+                       }\r
+                       prog=2;                 \r
                    } catch (e){\r
                        throw new MiMicException(\r
                                function(){\r
@@ -466,6 +487,9 @@ var MiMicRemoteMcuInterface;
                execBc:function execBc(i_bc)\r
                {\r
                        try{\r
+                               if(this._keep_alive==null){\r
+                                       throw new MiMicException(EE.NG,"disconnected");\r
+                               }\r
                                var res=this._xhrGet("http://"+this._mimic_host+"/mvm.api?v=1&bc="+i_bc,false);\r
                                if(res.status!=200){\r
                                        throw new MiMicException(EE.HTTP,"i_bc="+i_bc+",XHR.status="+res.status);\r
@@ -499,33 +523,44 @@ var MiMicRemoteMcuInterface;
                                if(this._keep_alive!=null){\r
                                        return;\r
                                }\r
-                               function checkProc(i_res)\r
+                               function xhrStatus(i_is_async,i_cb)\r
+                               {\r
+                                       try{\r
+                                               return _t._xhrGet("http://"+_t._mimic_host+"/status.api",i_is_async,i_cb);\r
+                                       }catch(e){\r
+                                               return null;\r
+                                       }\r
+                               };\r
+                               function intervalProc()\r
                                {\r
-                                       //結果の確認\r
-                                       if(!_t._isOnline_parseResponse(i_res)){\r
+                                       //現在時刻を計算\r
+                                       var now=MiMicLib.getNow();\r
+                                       //最後に通信に成功した時刻からの経過時間を計算\r
+                                       var lt=now-_t._last_xhr_res_time;\r
+                                       if(lt<3000){\r
+                                               return;\r
+                                       }\r
+                                       //最後の通信からの経過時間がNを超えていたら通信チェック\r
+                                       var res=xhrStatus(false,null);\r
+                                       if((res==null) || (!_t._isOnline_parseResponse(res))){\r
                                                if(_t._keep_alive!=null){\r
+                                                       //Intrervalを中断\r
+                                                       clearInterval(_t._keep_alive.tid);\r
                                                        _t._keep_alive=null;\r
                                                        i_callback(false);\r
                                                }\r
-                                       }else{\r
-                                               i_callback(true);\r
-                                               startCheck();\r
-                                       }\r
-                                       return;\r
-                               }\r
-                               function startCheck()\r
-                               {\r
-                                       _t._keep_alive={\r
-                                               tid:setTimeout(function(){_t._keep_alive.xhr=_t._xhrGet("http://"+_t._mimic_host+"/status.api",true,checkProc);},5000),\r
-                                               xhr:null};\r
+                                       }                                       \r
+                                       i_callback(true);\r
                                };\r
-                               //同期チェック\r
-                               var res=this._xhrGet("http://"+this._mimic_host+"/status.api",false,null);\r
-                               if(!this._isOnline_parseResponse(res)){\r
+                               //1回目の接続確認(同期接続)\r
+                               var res=xhrStatus(false,null);\r
+                               if((res==null) || (!_t._isOnline_parseResponse(res))){\r
                                        throw new MiMicException("Bad response from "+this._mimic_host);\r
-                               }                               \r
-                               //非同期監視の開始\r
-                               startCheck();\r
+                               }\r
+                               //周期監視の開始\r
+                               this._keep_alive={\r
+                                       tid:setInterval(intervalProc,500)\r
+                               };\r
                        }catch(e){\r
                                throw new MiMicException(e);\r
                        }\r
@@ -544,12 +579,8 @@ var MiMicRemoteMcuInterface;
                {\r
                        try{\r
                                if(this._keep_alive!=null){\r
-                                       clearTimeout(this._keep_alive.tid);\r
-                                       var xhr=this._keep_alive.xhr;\r
+                                       clearInterval(this._keep_alive.tid);\r
                                        this._keep_alive=null;//abortによるコールバックを抑制\r
-                                       if(xhr!=null){\r
-                                               xhr.abort();\r
-                                       }\r
                                }\r
                        }catch(e){\r
                                throw new MiMicException(e);\r
index ae271e9..c15440f 100644 (file)
@@ -11,6 +11,7 @@ function init()
        \r
        try{\r
                var     mcu=new LPCXpresso1769.Mcu("192.168.128.39",true);\r
+               mcu.events.onActivateChanged=function(t){alert(t);};\r
                var pwm=mcu.getPeripheral("PWM",{freq:100});\r
                pwmpin=pwm.getPin(LPCXpresso1769.P2[0]);\r
        }catch(e){\r
index 502c2c2..d1e41d7 100644 (file)
@@ -2,19 +2,19 @@
 <html>\r
 <head>\r
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\r
-<script src="MiMicCore.js"></script>   \r
-<script src="LPC1769.js"></script>     \r
-<script src="LPC1769.Mcu.js"></script> \r
-<script src="LPC1769769.Memory.js"></script>   \r
-<script src="LPC1769.Port.js"></script>\r
-<script src="LPC1769.Pin.js"></script>\r
-<script src="LPC1769.Gpio.js"></script>\r
-<script src="LPC1769.Peripheral.js"></script>  \r
-<script src="LPC1769.Adc.js"></script> \r
-<script src="LPC1769.Dac.js"></script> \r
-<script src="LPC1769.Pwm.js"></script> \r
-<script src="LPC1769.NativeInterface.js"></script>\r
-<script src="MbedM3.js"></script>\r
+<script src="../api.js/MiMicCore.js"></script> \r
+<script src="../api.js/LPC1769.js"></script>   \r
+<script src="../api.js/LPC1769.Mcu.js"></script>       \r
+<script src="../api.js/LPC1769769.Memory.js"></script> \r
+<script src="../api.js/LPC1769.Port.js"></script>\r
+<script src="../api.js/LPC1769.Pin.js"></script>\r
+<script src="../api.js/LPC1769.Gpio.js"></script>\r
+<script src="../api.js/LPC1769.Peripheral.js"></script>        \r
+<script src="../api.js/LPC1769.Adc.js"></script>       \r
+<script src="../api.js/LPC1769.Dac.js"></script>       \r
+<script src="../api.js/LPC1769.Pwm.js"></script>       \r
+<script src="../api.js/LPC1769.NativeInterface.js"></script>\r
+<script src="../api.js/MbedM3.js"></script>\r
 \r
 <script type="text/javascript">\r
 function Logger(i_tag)\r