Changeset 125 for uKadecot/trunk/tools


Ignore:
Timestamp:
Jul 23, 2015, 3:21:02 PM (9 years ago)
Author:
coas-nagasima
Message:

ECHONET Lite規格に準拠していない動作を修正。
WebSocketの接続先URLを/webapi.ashxから/webapiに変更。
DHCPのリトライ処理が行われていなかったのを修正。
DHCPの有効/無効設定を追加し、固定IPアドレスを設定できるよう変更。

Location:
uKadecot/trunk/tools/EcnlControllerUI
Files:
1 added
1 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/CtrlUI.cs

    r108 r125  
    9999        DeviceController.DeviceInfo m_CurrentNode
    100100        {
    101                 get             {                       return _m_CurrentNode;          }
     101                get { return _m_CurrentNode; }
    102102                set
    103103                {
     
    118118                m_WampClient.addOpenCallback(WampClientConnected);
    119119                m_WampClient.addCloseCallback(WampClientDisconnected);
    120                 m_WampClient.connect("ws://" + Window.Location.Host + "/webapi.ashx");
     120                m_WampClient.connect("ws://" + Window.Location.Host + "/webapi");
    121121        }
    122122
     
    160160                PropertyList.Change(PropertyChange);
    161161                SetInitParamsBtn.Click(SetInitParams);
     162                GetInitParamsBtn.Click(GetInitParams);
    162163        }
    163164
     
    506507                if (connect && !m_WampClient.isConnecting()) {
    507508                        Debug.WriteLine("m_WampClient.isConnecting():" + m_WampClient.isConnecting().ToString());
    508                         m_WampClient.connect("ws://" + Window.Location.Host + "/webapi.ashx");
     509                        m_WampClient.connect("ws://" + Window.Location.Host + "/webapi");
    509510                }
    510511                //接続スイッチがOff && m_WampClient.isConnecting() ==true
     
    911912        {
    912913                var macaddrfrm = new Regex("([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2})");
     914                var ipaddrfrm = new Regex("([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})");
    913915
    914916                var m = macaddrfrm.Exec(MacAddrTxt.GetValue());
     
    916918                        return;
    917919
    918                 var ma1 = Byte.Parse(m[1], 16);
    919                 var ma2 = Byte.Parse(m[2], 16);
    920                 var ma3 = Byte.Parse(m[3], 16);
    921                 var ma4 = Byte.Parse(m[4], 16);
    922                 var ma5 = Byte.Parse(m[5], 16);
    923                 var ma6 = Byte.Parse(m[6], 16);
     920                var macAddr = "\"macAddr\":["
     921                        + Byte.Parse(m[1], 16) + ","
     922                        + Byte.Parse(m[2], 16) + ","
     923                        + Byte.Parse(m[3], 16) + ","
     924                        + Byte.Parse(m[4], 16) + ","
     925                        + Byte.Parse(m[5], 16) + ","
     926                        + Byte.Parse(m[6], 16) + "]";
     927
     928                var dhcpEnable = "\"dhcpEnable\":" + DhcpEnableCb.Prop("checked").ToString();
     929
     930                m = ipaddrfrm.Exec(IpAddrTxt.GetValue());
     931                if (m == null)
     932                        return;
     933
     934                var ipAddr = "\"ipAddr\":["
     935                        + Byte.Parse(m[1]) + ","
     936                        + Byte.Parse(m[2]) + ","
     937                        + Byte.Parse(m[3]) + ","
     938                        + Byte.Parse(m[4]) + "]";
     939
     940
     941                m = ipaddrfrm.Exec(NetmaskTxt.GetValue());
     942                if (m == null)
     943                        return;
     944
     945                var netmask = "\"netmask\":["
     946                        + Byte.Parse(m[1]) + ","
     947                        + Byte.Parse(m[2]) + ","
     948                        + Byte.Parse(m[3]) + ","
     949                        + Byte.Parse(m[4]) + "]";
     950
     951
     952                m = ipaddrfrm.Exec(GatewayTxt.GetValue());
     953                if (m == null)
     954                        return;
     955
     956                var gateway = "\"gateway\":["
     957                        + Byte.Parse(m[1]) + ","
     958                        + Byte.Parse(m[2]) + ","
     959                        + Byte.Parse(m[3]) + ","
     960                        + Byte.Parse(m[4]) + "]";
    924961
    925962                m_WampClient.sendCall("{}", "jp.toppers.ecnl.procedure.setInitParams", "[]",
    926                         "{\"macAddr\":[" + ma1 + "," + ma2 + "," + ma3 + "," + ma4 + "," + ma5 + "," + ma6 + "]}", SetInitParamsRes);
     963                        "{" + macAddr + "," + dhcpEnable + "," + ipAddr + "," + netmask + "," + gateway + "}", SetInitParamsRes);
    927964        }
    928965
     
    9651002                }
    9661003
    967                 var macaddr = (byte[])(((dynamic[])args)[4].macAddr);
     1004                dynamic param = ((dynamic[])args)[4];
     1005                var macaddr = (byte[])(param.macAddr);
    9681006                MacAddrTxt.Value(String.Format("{0:X02}:{1:X02}:{2:X02}:{3:X02}:{4:X02}:{5:X02}",
    9691007                        macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5]));
     1008
     1009                var dhcpEnable = (bool)(param.dhcpEnable);
     1010                DhcpEnableCb.Prop("checked", dhcpEnable).CheckboxRadio("refresh");
     1011
     1012                var ipaddr = (byte[])(param.ipAddr);
     1013                IpAddrTxt.Value(String.Format("{0}:{1}:{2}:{3}",
     1014                        ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]));
     1015
     1016                var netmask = (byte[])(param.netmask);
     1017                NetmaskTxt.Value(String.Format("{0}:{1}:{2}:{3}",
     1018                        netmask[0], netmask[1], netmask[2], netmask[3]));
     1019
     1020                var gateway = (byte[])(param.gateway);
     1021                GatewayTxt.Value(String.Format("{0}:{1}:{2}:{3}",
     1022                        gateway[0], gateway[1], gateway[2], gateway[3]));
    9701023        }
    9711024
     
    10051058        /// <summary>MACアドレス入力</summary>
    10061059        public jQueryObject MacAddrTxt { get { return jQuery.Select("#txt_mac_addr", page); } }
     1060
     1061        /// <summary>DHCP有効/無効</summary>
     1062        public jQueryObject DhcpEnableCb { get { return jQuery.Select("#cb_dhcp_enable", page); } }
     1063
     1064        /// <summary>IPアドレス入力</summary>
     1065        public jQueryObject IpAddrTxt { get { return jQuery.Select("#txt_ip_addr", page); } }
     1066
     1067        /// <summary>サブネットマスク入力</summary>
     1068        public jQueryObject NetmaskTxt { get { return jQuery.Select("#txt_netmask", page); } }
     1069
     1070        /// <summary>デフォルトゲートウェイ入力</summary>
     1071        public jQueryObject GatewayTxt { get { return jQuery.Select("#txt_gateway", page); } }
    10071072
    10081073        public void pinMode_Change(UIFieldSet fieldset, int pin)
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/EcnlControllerUI.csproj

    r101 r125  
    2121    <IISExpressUseClassicPipelineMode />
    2222    <NoStdLib>True</NoStdLib>
     23    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
     24    <RestorePackages>true</RestorePackages>
    2325  </PropertyGroup>
    2426  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     
    110112$(SolutionDir)tools\jsmin &lt; "$(ProjectDir)$(OutDir)$(TargetName).js" &gt; "$(SolutionDir)EcnlCtrlUI\js\ctrlui.min.js" "Copyright (C) 2015 by TOPPERS Project, Inc., JAPAN"</PostBuildEvent>
    111113  </PropertyGroup>
     114  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
    112115  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
    113116       Other similar extension points exist, see Microsoft.Common.targets.
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/EcnlCtrlUI.csproj

    r101 r125  
    2020    <IISExpressWindowsAuthentication />
    2121    <IISExpressUseClassicPipelineMode />
     22    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
     23    <RestorePackages>true</RestorePackages>
    2224  </PropertyGroup>
    2325  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     
    3941  </PropertyGroup>
    4042  <ItemGroup>
     43    <Reference Include="Intelligencia.UrlRewriter">
     44      <HintPath>..\packages\Intelligencia.UrlRewriter.2.0.0.9\lib\net40\Intelligencia.UrlRewriter.dll</HintPath>
     45    </Reference>
    4146    <Reference Include="Microsoft.CSharp" />
    4247    <Reference Include="System.Runtime.Serialization" />
     
    6166    <Content Include="css\ecn_gen.css" />
    6267    <Content Include="imgs\core-s.svg" />
    63     <Content Include="imgs\logo.gif" />
     68    <Content Include="imgs\logo.png" />
    6469    <Content Include="js\ctrlui.js" />
    6570    <Content Include="js\ctrlui.min.js" />
     
    529534    </VisualStudio>
    530535  </ProjectExtensions>
     536  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
    531537  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
    532538       Other similar extension points exist, see Microsoft.Common.targets.
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.config

    r102 r125  
    55  -->
    66<configuration>
    7   <system.web>
    8     <compilation debug="true" targetFramework="4.5" />
    9     <httpRuntime targetFramework="4.5" />
    10   </system.web>
    11   <system.webServer>
    12     <defaultDocument enabled="true">
    13        <files>
    14            <clear/>
    15            <add value="index.html"/>
    16        </files>
    17     </defaultDocument>
    18     <staticContent>
    19       <mimeMap fileExtension=".json" mimeType="application/json"/>
    20       <mimeMap fileExtension=".cfg" mimeType="text/plain"/>
    21     </staticContent>
    22   </system.webServer>
     7        <configSections>
     8                <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
     9        </configSections>
     10        <system.web>
     11                <compilation debug="true" targetFramework="4.5" />
     12                <httpRuntime targetFramework="4.5" />
     13                <httpModules>
     14                        <add type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" name="UrlRewriter" />
     15                </httpModules>
     16        </system.web>
     17        <system.webServer>
     18                <defaultDocument enabled="true">
     19                        <files>
     20                                <clear />
     21                                <add value="index.html" />
     22                        </files>
     23                </defaultDocument>
     24                <staticContent>
     25                        <mimeMap fileExtension=".json" mimeType="application/json" />
     26                        <mimeMap fileExtension=".cfg" mimeType="text/plain" />
     27                </staticContent>
     28                <modules runAllManagedModulesForAllRequests="true">
     29                        <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
     30                </modules>
     31                <validation validateIntegratedModeConfiguration="false" />
     32        </system.webServer>
     33        <rewriter>
     34                <rewrite url="~/webapi$" to="~/webapi.ashx" />
     35        </rewriter>
    2336</configuration>
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/copy_httpd-fs.bat

    r101 r125  
    110110mkdir ..\..\..\uip\apps\webserver\httpd-fs\imgs
    111111copy /Y imgs\core-s.svg ..\..\..\uip\apps\webserver\httpd-fs\imgs\core-s.svg
    112 copy /Y imgs\logo.gif ..\..\..\uip\apps\webserver\httpd-fs\imgs\logo.gif
     112copy /Y imgs\logo.png ..\..\..\uip\apps\webserver\httpd-fs\imgs\logo.png
    113113
    114114mkdir ..\..\..\uip\apps\webserver\httpd-fs\js
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/index.html

    r101 r125  
    22<html>
    33<head>
    4     <meta charset="utf-8">
    5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6     <meta name="viewport" content="width=device-width, initial-scale=1">
    7     <title>コントローラWebアプリケーション</title>
    8     <link rel="shortcut icon" href="favicon.ico">
     4        <meta charset="utf-8">
     5        <meta http-equiv="X-UA-Compatible" content="IE=edge">
     6        <meta name="viewport" content="width=device-width, initial-scale=1">
     7        <title>コントローラWebアプリケーション</title>
     8        <link rel="shortcut icon" href="favicon.ico">
    99        <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile.icons-1.4.5.min.css">
    10     <link rel="stylesheet" href="themes/ecn-theme.min.css">
     10        <link rel="stylesheet" href="themes/ecn-theme.min.css">
    1111        <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile.structure-1.4.5.min.css">
    1212        <link rel="stylesheet" href="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.css" />
    13     <link rel="stylesheet" href="css/ecn_gen.css">
     13        <link rel="stylesheet" href="css/ecn_gen.css">
    1414        <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    1515        <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
    16     <script src="js/mscorlib.min.js"></script>
    17     <script src="js/linq.min.js"></script>
     16        <script src="js/mscorlib.min.js"></script>
     17        <script src="js/linq.min.js"></script>
    1818        <script src="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.core.min.js"></script>
    1919        <script src="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.mode.calbox.min.js"></script>
    2020        <script src="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.mode.datebox.min.js"></script>
    2121        <script src="http://cdn.jtsage.com/datebox/i18n/jqm-datebox.lang.utf8.js"></script>
    22     <script src="js/nisews.js"></script>
    23     <script src="js/ctrlui.js"></script>
    24     <script type="text/javascript">
    25         if (typeof window.external.CreateXMLHttpRequest != "undefined") {
    26             window.XMLHttpRequest = function () {
    27                 return window.external.CreateXMLHttpRequest();
    28             }
    29             global.WebSocket = function (url, protocol) {
    30                 return window.external.CreateWebSocket(url, protocol);
    31             }
    32             window.onerror = function (msg, src, line, column, _exc) {
    33                 var exc = window.external.new_object();
    34                 for (m in _exc) {
    35                     window.external.object_add(exc, m, _exc[m]);
    36                 }
    37                 window.external.onerror(msg, src, line, column, exc);
    38             }
    39             window.external.Error = window.Error;
    40             window.Error = function () {
    41                 var nullPtr = null;
    42                 nullPtr(); // スタックトレースを表示するためnull参照
    43                 return window.external.new_error();
    44             }
    45             ss.Debug.writeln = function (text) {
    46                 window.external.output_debug_string(text);
    47             }
    48             console.log = function (text) {
    49                 window.external.output_debug_string(text);
    50             }
    51         }
    52         else {
    53             global.WebSocket = function (url, protocol) {
    54                 return new NiseWebSocket(url, protocol);
    55             }
    56         }
    57         CtrlUI.main();
    58     </script>
     22        <script src="js/nisews.js"></script>
     23        <script src="js/ctrlui.js"></script>
     24        <script type="text/javascript">
     25                if (typeof window.external.CreateXMLHttpRequest != "undefined") {
     26                        window.XMLHttpRequest = function () {
     27                                return window.external.CreateXMLHttpRequest();
     28                        }
     29                        global.WebSocket = function (url, protocol) {
     30                                return window.external.CreateWebSocket(url, protocol);
     31                        }
     32                        window.onerror = function (msg, src, line, column, _exc) {
     33                                var exc = window.external.new_object();
     34                                for (m in _exc) {
     35                                        window.external.object_add(exc, m, _exc[m]);
     36                                }
     37                                window.external.onerror(msg, src, line, column, exc);
     38                        }
     39                        window.external.Error = window.Error;
     40                        window.Error = function () {
     41                                var nullPtr = null;
     42                                nullPtr(); // スタックトレースを表示するためnull参照
     43                                return window.external.new_error();
     44                        }
     45                        ss.Debug.writeln = function (text) {
     46                                window.external.output_debug_string(text);
     47                        }
     48                        console.log = function (text) {
     49                                window.external.output_debug_string(text);
     50                        }
     51                }
     52                else {
     53                        global.WebSocket = function (url, protocol) {
     54                                return new NiseWebSocket(url, protocol);
     55                        }
     56                }
     57                CtrlUI.main();
     58        </script>
    5959</head>
    6060<body>
    61     <div data-role="page" id="index">
    62         <div data-role="header">
    63             <h1 id="header_logo" style="margin: 0px; text-align: left; background-color: white;">
    64                 <a target='_blank' href="http://www.toppers.jp/index.html">
    65                     <img src="./imgs/logo.gif" width="353" height="74" border="0" alt="TOPPERS LOGO">
    66                 </a>
    67             </h1>
    68             <a data-role="button" href="#information" data-rel="popup" data-icon="info" class="ui-btn-right"
    69                style="-webkit-border-radius: 6em; border-radius: 6em;"
    70                onclick="CtrlUI.info.update(this, 'information');">情報
    71             </a>
    72         </div>
    73         <h2><strong>TOPPERS/ECNL</strong>コントローラWebアプリケーション</h2>
    74         <div data-role="panel" class="ecn-navmenu-panel" data-position="left" data-display="overlay" style="background-color: #f9f9f9;">
    75             <div class="ui-field-contain" id="fs_connection_ctn">
    76                 <label for="fs_connection">接続</label>
    77                 <input type="checkbox" name="fs_connection" id="fs_connection" data-role="flipswitch" data-on-text="On" data-off-text="Off">
    78             </div>
    79             <button id="bt_search" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-alert ui-btn-c"
    80                     onclick="CtrlUI.page.search(this);">
    81                 機器検索
    82             </button>
    83             <h2>インスタンス</h2>
    84             <div id="node_list" data-role="collapsibleset" data-inset="true" data-collapsed-icon="carat-r" data-expanded-icon="carat-d">
    85             </div>
    86             <button id="bt_set_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-star ui-btn-c">
    87                 設定
    88             </button>
    89             <button id="bt_get_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-eye ui-btn-c">
    90                 取得
    91             </button>
    92             <button id="bt_set_get_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-recycle ui-btn-c">
    93                 設定と取得
    94             </button>
    95             <button id="bt_kadecot" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-action ui-btn-b">
    96                 Kadecot App list
    97             </button>
    98         </div>
    99         <div role="main" class="ui-content ecn-content">
    100             <ul id="lv_property_list" data-role="listview" data-inset="true"></ul>
    101         </div>
    102         <div data-role="footer" data-position="fixed">
    103             <p style="padding-left: 1em">
    104                 Copyright &copy; 2015 by TOPPERS Project, Inc. All Rights Reserved.
    105             </p>
    106             <a data-role="button" href="#setting_panel" data-icon="gear" class="ui-btn-right"
    107                style="-webkit-border-radius: 6em; border-radius: 6em;">設定
    108             </a>
    109         </div>
    110         <div data-role="popup" id="popup_dialog" data-overlay-theme="b" data-theme="b" data-dismissible="false" style="max-width: 400px;">
    111             <div data-role="header" data-theme="a">
    112                 <h1 id="popup_dialog_caption">エラー</h1>
    113             </div>
    114             <div role="main" class="ui-content">
    115                 <h3 id="popup_dialog_title" class="ui-title">エラー</h3>
    116                 <p id="popup_dialog_text">エラー</p>
    117                 <a href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-b" data-rel="back">OK</a>
    118             </div>
    119         </div>
    120         <div id="information-screen"></div>
    121         <div id="information-popup">
    122             <div data-role="popup" id="information" data-theme="b">
    123                 <img src="js/images/ajax-loader.gif" />
    124             </div>
    125         </div>
    126         <div data-role="panel" id="setting_panel" data-position="right" data-display="overlay" data-theme="b">
    127             <h3>設定</h3>
     61        <div data-role="page" id="index">
     62                <div data-role="header">
     63                        <h1 id="header_logo" style="margin: 0px; text-align: left; background-color: white;">
     64                                <a target='_blank' href="http://www.toppers.jp/index.html">
     65                                        <img src="./imgs/logo.png" width="353" height="74" border="0" alt="TOPPERS LOGO">
     66                                </a>
     67                        </h1>
     68                        <a data-role="button" href="#information" data-rel="popup" data-icon="info" class="ui-btn-right"
     69                                style="-webkit-border-radius: 6em; border-radius: 6em;"
     70                                onclick="CtrlUI.info.update(this, 'information');">情報
     71                        </a>
     72                </div>
     73                <h2><strong>TOPPERS/ECNL</strong>コントローラWebアプリケーション</h2>
     74                <div data-role="panel" class="ecn-navmenu-panel" data-position="left" data-display="overlay" style="background-color: #f9f9f9;">
     75                        <div class="ui-field-contain" id="fs_connection_ctn">
     76                                <label for="fs_connection">接続</label>
     77                                <input type="checkbox" name="fs_connection" id="fs_connection" data-role="flipswitch" data-on-text="On" data-off-text="Off">
     78                        </div>
     79                        <button id="bt_search" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-alert ui-btn-c"
     80                                onclick="CtrlUI.page.search(this);">
     81                                機器検索
     82                        </button>
     83                        <h2>インスタンス</h2>
     84                        <div id="node_list" data-role="collapsibleset" data-inset="true" data-collapsed-icon="carat-r" data-expanded-icon="carat-d">
     85                        </div>
     86                        <button id="bt_set_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-star ui-btn-c">
     87                                設定
     88                        </button>
     89                        <button id="bt_get_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-eye ui-btn-c">
     90                                取得
     91                        </button>
     92                        <button id="bt_set_get_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-recycle ui-btn-c">
     93                                設定と取得
     94                        </button>
     95                        <button id="bt_kadecot" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-action ui-btn-b">
     96                                Kadecot App list
     97                        </button>
     98                </div>
     99                <div role="main" class="ui-content ecn-content">
     100                        <ul id="lv_property_list" data-role="listview" data-inset="true"></ul>
     101                </div>
     102                <div data-role="footer" data-position="fixed">
     103                        <p style="padding-left: 1em">
     104                                Copyright &copy; 2015 by TOPPERS Project, Inc. All Rights Reserved.
     105                        </p>
     106                        <a data-role="button" href="#setting_panel" data-icon="gear" class="ui-btn-right"
     107                                style="-webkit-border-radius: 6em; border-radius: 6em;">設定
     108                        </a>
     109                </div>
     110                <div data-role="popup" id="popup_dialog" data-overlay-theme="b" data-theme="b" data-dismissible="false" style="max-width: 400px;">
     111                        <div data-role="header" data-theme="a">
     112                                <h1 id="popup_dialog_caption">エラー</h1>
     113                        </div>
     114                        <div role="main" class="ui-content">
     115                                <h3 id="popup_dialog_title" class="ui-title">エラー</h3>
     116                                <p id="popup_dialog_text">エラー</p>
     117                                <a href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-b" data-rel="back">OK</a>
     118                        </div>
     119                </div>
     120                <div id="information-screen"></div>
     121                <div id="information-popup">
     122                        <div data-role="popup" id="information" data-theme="b">
     123                                <img src="js/images/ajax-loader.gif" />
     124                        </div>
     125                </div>
     126                <div data-role="panel" id="setting_panel" data-position="right" data-display="overlay" data-theme="b">
     127                        <h3>設定</h3>
    128128                        <label for="txt_mac_addr">MACアドレス</label>
    129             <input name="txt_mac_addr" id="txt_mac_addr" value="12:34:56:78:9A:BC" type="text">
    130             <button id="bt_set_init_params" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-check ui-btn-c">
    131                 設定
    132             </button>
     129                        <input name="txt_mac_addr" id="txt_mac_addr" value="12:34:56:78:9A:BC" type="text">
     130                        <label for="cb_dhcp_enable">DHCP有効</label>
     131                        <input name="cb_dhcp_enable" id="cb_dhcp_enable" type="checkbox">
     132                        <label for="txt_ip_addr">IPアドレス</label>
     133                        <input name="txt_ip_addr" id="txt_ip_addr" value="192.168.2.103" type="text">
     134                        <label for="txt_netmask">サブネットマスク</label>
     135                        <input name="txt_netmask" id="txt_netmask" value="255.255.255.0" type="text">
     136                        <label for="txt_gateway">デフォルトゲートウェイ</label>
     137                        <input name="txt_gateway" id="txt_gateway" value="192.168.2.1" type="text">
     138                        <button id="bt_set_init_params" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-check ui-btn-c">
     139                                設定
     140                        </button>
    133141                        <button id="bt_get_init_params" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-check ui-btn-c">
    134142                                取得
    135143                        </button>
    136             <h3>ライセンス</h3>
    137             <p>
    138                 このサイトは<a target='_blank' href="http://www.toppers.jp/license.html">TOPPERSライセンス</a>で公開しています。<br>
    139                 このサイトは、いくつかのJavaScriptライブラリを使用しています。サイト右上のソフトウェア情報をご覧ください。
    140             </p>
    141             <a href="#" data-rel="close" class="ui-btn ui-shadow ui-corner-all ui-btn-a ui-icon-delete ui-btn-icon-left ui-btn-inline">閉じる</a>
    142         </div>
    143     </div>
     144                        <h3>ライセンス</h3>
     145                        <p>
     146                                このサイトは<a target='_blank' href="http://www.toppers.jp/license.html">TOPPERSライセンス</a>で公開しています。<br>
     147                                このサイトは、いくつかのJavaScriptライブラリを使用しています。サイト右上のソフトウェア情報をご覧ください。
     148                        </p>
     149                        <a href="#" data-rel="close" class="ui-btn ui-shadow ui-corner-all ui-btn-a ui-icon-delete ui-btn-icon-left ui-btn-inline">閉じる</a>
     150                </div>
     151        </div>
    144152</body>
    145153</html>
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.js

    r108 r125  
    1818                this.$m_WampClient.addOpenCallback(ss.mkdel(this, this.$wampClientConnected));
    1919                this.$m_WampClient.addCloseCallback(ss.mkdel(this, this.$wampClientDisconnected));
    20                 this.$m_WampClient.connect('ws://' + window.location.host + '/webapi.ashx');
     20                this.$m_WampClient.connect('ws://' + window.location.host + '/webapi');
    2121        };
    2222        $CtrlUI.__typeName = 'CtrlUI';
     
    26172617                        this.get_propertyList().change(ss.thisFix(ss.mkdel(this, this.propertyChange)));
    26182618                        this.get_setInitParamsBtn().click(ss.thisFix(ss.mkdel(this, this.$setInitParams)));
     2619                        this.get_getInitParamsBtn().click(ss.thisFix(ss.mkdel(this, this.$getInitParams)));
    26192620                },
    26202621                $initClassGroups: function(data) {
     
    28082809                        //接続スイッチがOn && m_WampClient.isConnecting() == false
    28092810                        if (connect && !this.$m_WampClient.isConnecting()) {
    2810                                 this.$m_WampClient.connect('ws://' + window.location.host + '/webapi.ashx');
     2811                                this.$m_WampClient.connect('ws://' + window.location.host + '/webapi');
    28112812                        }
    28122813                        else if (!connect && this.$m_WampClient.isConnecting()) {
     
    30413042                $setInitParams: function(elem, e) {
    30423043                        var macaddrfrm = new RegExp('([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2})');
     3044                        var ipaddrfrm = new RegExp('([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})');
    30433045                        var m = macaddrfrm.exec(this.get_macAddrTxt().val());
    30443046                        if (ss.isNullOrUndefined(m)) {
    30453047                                return;
    30463048                        }
    3047                         var ma1 = parseInt(m[1], 16);
    3048                         var ma2 = parseInt(m[2], 16);
    3049                         var ma3 = parseInt(m[3], 16);
    3050                         var ma4 = parseInt(m[4], 16);
    3051                         var ma5 = parseInt(m[5], 16);
    3052                         var ma6 = parseInt(m[6], 16);
    3053                         this.$m_WampClient.sendCall('{}', 'jp.toppers.ecnl.procedure.setInitParams', '[]', '{"macAddr":[' + ma1 + ',' + ma2 + ',' + ma3 + ',' + ma4 + ',' + ma5 + ',' + ma6 + ']}', ss.mkdel(this, this.setInitParamsRes));
     3049                        var macAddr = '"macAddr":[' + parseInt(m[1], 16) + ',' + parseInt(m[2], 16) + ',' + parseInt(m[3], 16) + ',' + parseInt(m[4], 16) + ',' + parseInt(m[5], 16) + ',' + parseInt(m[6], 16) + ']';
     3050                        var dhcpEnable = '"dhcpEnable":' + this.get_dhcpEnableCb().prop('checked').toString();
     3051                        m = ipaddrfrm.exec(this.get_ipAddrTxt().val());
     3052                        if (ss.isNullOrUndefined(m)) {
     3053                                return;
     3054                        }
     3055                        var ipAddr = '"ipAddr":[' + parseInt(m[1]) + ',' + parseInt(m[2]) + ',' + parseInt(m[3]) + ',' + parseInt(m[4]) + ']';
     3056                        m = ipaddrfrm.exec(this.get_netmaskTxt().val());
     3057                        if (ss.isNullOrUndefined(m)) {
     3058                                return;
     3059                        }
     3060                        var netmask = '"netmask":[' + parseInt(m[1]) + ',' + parseInt(m[2]) + ',' + parseInt(m[3]) + ',' + parseInt(m[4]) + ']';
     3061                        m = ipaddrfrm.exec(this.get_gatewayTxt().val());
     3062                        if (ss.isNullOrUndefined(m)) {
     3063                                return;
     3064                        }
     3065                        var gateway = '"gateway":[' + parseInt(m[1]) + ',' + parseInt(m[2]) + ',' + parseInt(m[3]) + ',' + parseInt(m[4]) + ']';
     3066                        this.$m_WampClient.sendCall('{}', 'jp.toppers.ecnl.procedure.setInitParams', '[]', '{' + macAddr + ',' + dhcpEnable + ',' + ipAddr + ',' + netmask + ',' + gateway + '}', ss.mkdel(this, this.setInitParamsRes));
    30543067                },
    30553068                setInitParamsRes: function(args) {
     
    30793092                                return;
    30803093                        }
    3081                         var macaddr = ss.cast(ss.cast(args, Array)[4].macAddr, Array);
     3094                        var param = ss.cast(args, Array)[4];
     3095                        var macaddr = ss.cast(param.macAddr, Array);
    30823096                        this.get_macAddrTxt().val(ss.formatString('{0:X02}:{1:X02}:{2:X02}:{3:X02}:{4:X02}:{5:X02}', macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5]));
     3097                        var dhcpEnable = !!param.dhcpEnable;
     3098                        this.get_dhcpEnableCb().prop('checked', dhcpEnable).checkboxradio('refresh');
     3099                        var ipaddr = ss.cast(param.ipAddr, Array);
     3100                        this.get_ipAddrTxt().val(ss.formatString('{0}:{1}:{2}:{3}', ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]));
     3101                        var netmask = ss.cast(param.netmask, Array);
     3102                        this.get_netmaskTxt().val(ss.formatString('{0}:{1}:{2}:{3}', netmask[0], netmask[1], netmask[2], netmask[3]));
     3103                        var gateway = ss.cast(param.gateway, Array);
     3104                        this.get_gatewayTxt().val(ss.formatString('{0}:{1}:{2}:{3}', gateway[0], gateway[1], gateway[2], gateway[3]));
    30833105                },
    30843106                get_setPropertyBtn: function() {
     
    31173139                get_macAddrTxt: function() {
    31183140                        return $('#txt_mac_addr', $CtrlUI.$page);
     3141                },
     3142                get_dhcpEnableCb: function() {
     3143                        return $('#cb_dhcp_enable', $CtrlUI.$page);
     3144                },
     3145                get_ipAddrTxt: function() {
     3146                        return $('#txt_ip_addr', $CtrlUI.$page);
     3147                },
     3148                get_netmaskTxt: function() {
     3149                        return $('#txt_netmask', $CtrlUI.$page);
     3150                },
     3151                get_gatewayTxt: function() {
     3152                        return $('#txt_gateway', $CtrlUI.$page);
    31193153                },
    31203154                pinMode_Change: function(fieldset, pin) {
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.min.js

    r108 r125  
    11// Copyright (C) 2015 by TOPPERS Project, Inc., JAPAN
    22
    3 ï»¿(function(){'use strict';var $asm={};global.control=global.control||{};global.ctrlui=global.ctrlui||{};global.Kadecot=global.Kadecot||{};ss.initAssembly($asm,'EcnlControllerUI');var $CtrlUI=function(){this.$read=new(ss.makeGenericType(ss.Dictionary$2,[$ctrlui_DeviceController$DeviceInfo,$ctrlui_DeviceController$DeviceInfo]))();this.$m_WampClient=null;this.$m_DeviceController=null;this.$_m_CurrentNode=null;this.$timerId=0;this.$dpi=null;this.$m_WampClient=new $Kadecot_WampClient();this.$m_WampClient.addOpenCallback(ss.mkdel(this,this.$wampClientConnected));this.$m_WampClient.addCloseCallback(ss.mkdel(this,this.$wampClientDisconnected));this.$m_WampClient.connect('ws://'+window.location.host+'/webapi.ashx');};$CtrlUI.__typeName='CtrlUI';$CtrlUI.main=function(){if(ss.isNullOrUndefined($CtrlUI.page)){$CtrlUI.page=new $CtrlUI();$CtrlUI.info=new $ctrlui_Information();}
     3(function(){'use strict';var $asm={};global.control=global.control||{};global.ctrlui=global.ctrlui||{};global.Kadecot=global.Kadecot||{};ss.initAssembly($asm,'EcnlControllerUI');var $CtrlUI=function(){this.$read=new(ss.makeGenericType(ss.Dictionary$2,[$ctrlui_DeviceController$DeviceInfo,$ctrlui_DeviceController$DeviceInfo]))();this.$m_WampClient=null;this.$m_DeviceController=null;this.$_m_CurrentNode=null;this.$timerId=0;this.$dpi=null;this.$m_WampClient=new $Kadecot_WampClient();this.$m_WampClient.addOpenCallback(ss.mkdel(this,this.$wampClientConnected));this.$m_WampClient.addCloseCallback(ss.mkdel(this,this.$wampClientDisconnected));this.$m_WampClient.connect('ws://'+window.location.host+'/webapi');};$CtrlUI.__typeName='CtrlUI';$CtrlUI.main=function(){if(ss.isNullOrUndefined($CtrlUI.page)){$CtrlUI.page=new $CtrlUI();$CtrlUI.info=new $ctrlui_Information();}
    44$(document).on('pageinit','#index',ss.mkdel($CtrlUI.page,$CtrlUI.page.$initClassGroups$1));};$CtrlUI.getPage=function(ele){var page=ele;if($(page).is('[data-role="page"]')){return page;}
    55if($(page).parents('[data-role="page"]').length===1){return $(page).parents('[data-role="page"]').get(0);}
     
    233233else if(ss.isValue(arguments1)&&ss.isValue(argumentsKw)){ss.add(list,argsJson);ss.add(list,argsKwJson);}
    234234data=JSON.stringify(list);return data;};global.Kadecot.WampSerializer=$Kadecot_WampSerializer;ss.initClass($CtrlUI,$asm,{get_$m_CurrentNode:function(){return this.$_m_CurrentNode;},set_$m_CurrentNode:function(value){var flag=!ss.referenceEquals(this.$_m_CurrentNode,value)||ss.isNullOrUndefined(this.$_m_CurrentNode)&&ss.isNullOrUndefined(value);this.$_m_CurrentNode=value;if(flag){$(document).trigger($control_UIEventNames.currentNodeChange);}},$initClassGroups$1:function(eve){$CtrlUI.$page=eve.target;this.$setEvent();if(ss.isValue($CtrlUI.$m_ClassGroups)){return;}
    235 $ctrlui_DeviceController.getClassInfo=ss.mkdel(this,this.$getClassInfoHandler);this.set_$m_CurrentNode(null);var ClassGroupListUrl='devices/ClassGroupList.json';$.ajax(ClassGroupListUrl).success(ss.mkdel(this,this.$initClassGroups)).error(function(request,textStatus,error){$CtrlUI.$ajaxError(request,textStatus,error,ClassGroupListUrl);});},$setEvent:function(){$(document).on($control_UIEventNames.loadingShow,$control_UIEventHandler.loadingShow);$(document).on($control_UIEventNames.loadingHide,$control_UIEventHandler.loadingHide);$(document).on($control_UIEventNames.currentNodeChange,ss.thisFix(ss.mkdel(this,this.$currentNodeChange)));$(document).on($control_UIEventNames.searchStart,ss.mkdel(this,this.searchStart));$(document).on($control_UIEventNames.searchEnd,ss.mkdel(this,this.searchEnd));$(document).on($control_UIEventNames.searchError,ss.mkdel(this,this.searchError));$(document).on($control_UIEventNames.propertyWriteStart,ss.mkdel(this,this.propertyWriteStart));$(document).on($control_UIEventNames.propertyWriteEnd,ss.mkdel(this,this.propertyWriteEnd));this.get_connectionSwt().change(ss.thisFix(ss.mkdel(this,this.connect)));this.get_setPropertyBtn().click(ss.thisFix(ss.mkdel(this,this.setProperty)));this.get_getPropertyBtn().click(ss.mkdel(this,this.getProperty));this.get_setGetPropertyBtn().click(ss.thisFix(ss.mkdel(this,this.setGetProperty)));this.get_kadecotBtn().click(ss.thisFix(ss.mkdel(this,this.kadecotClick)));this.get_propertyList().change(ss.thisFix(ss.mkdel(this,this.propertyChange)));this.get_setInitParamsBtn().click(ss.thisFix(ss.mkdel(this,this.$setInitParams)));},$initClassGroups:function(data){var classGroups=$control_UI.toJSClassGroupInfoList(data);$CtrlUI.$m_Classes=[];$CtrlUI.$m_ClassGroups=Array.prototype.slice.call(classGroups);this.$getClassInfoHandler($ctrlui_T_ECN_EOJ.x1_PROFILE,$ctrlui_T_ECN_EOJ.x2_NODE_PROFILE,ss.mkdel(this,this.$getClassInfoCallback));},$getClassInfoCallback:function(di){$CtrlUI.$m_ProfileClassInfo=di;},$getClassInfoHandler:function(x1,x2,cb){var eclass=Enumerable.from($CtrlUI.$m_Classes).firstOrDefault(function(p){return p.classGroup.classGroupCode===x1&&p.classCode===x2;},ss.getDefaultValue($ctrlui_JsonClassInfo));if(ss.isValue(eclass)){if(ss.isNullOrUndefined(eclass.properties)){this.$getPropertyList(eclass,cb);}
     235$ctrlui_DeviceController.getClassInfo=ss.mkdel(this,this.$getClassInfoHandler);this.set_$m_CurrentNode(null);var ClassGroupListUrl='devices/ClassGroupList.json';$.ajax(ClassGroupListUrl).success(ss.mkdel(this,this.$initClassGroups)).error(function(request,textStatus,error){$CtrlUI.$ajaxError(request,textStatus,error,ClassGroupListUrl);});},$setEvent:function(){$(document).on($control_UIEventNames.loadingShow,$control_UIEventHandler.loadingShow);$(document).on($control_UIEventNames.loadingHide,$control_UIEventHandler.loadingHide);$(document).on($control_UIEventNames.currentNodeChange,ss.thisFix(ss.mkdel(this,this.$currentNodeChange)));$(document).on($control_UIEventNames.searchStart,ss.mkdel(this,this.searchStart));$(document).on($control_UIEventNames.searchEnd,ss.mkdel(this,this.searchEnd));$(document).on($control_UIEventNames.searchError,ss.mkdel(this,this.searchError));$(document).on($control_UIEventNames.propertyWriteStart,ss.mkdel(this,this.propertyWriteStart));$(document).on($control_UIEventNames.propertyWriteEnd,ss.mkdel(this,this.propertyWriteEnd));this.get_connectionSwt().change(ss.thisFix(ss.mkdel(this,this.connect)));this.get_setPropertyBtn().click(ss.thisFix(ss.mkdel(this,this.setProperty)));this.get_getPropertyBtn().click(ss.mkdel(this,this.getProperty));this.get_setGetPropertyBtn().click(ss.thisFix(ss.mkdel(this,this.setGetProperty)));this.get_kadecotBtn().click(ss.thisFix(ss.mkdel(this,this.kadecotClick)));this.get_propertyList().change(ss.thisFix(ss.mkdel(this,this.propertyChange)));this.get_setInitParamsBtn().click(ss.thisFix(ss.mkdel(this,this.$setInitParams)));this.get_getInitParamsBtn().click(ss.thisFix(ss.mkdel(this,this.$getInitParams)));},$initClassGroups:function(data){var classGroups=$control_UI.toJSClassGroupInfoList(data);$CtrlUI.$m_Classes=[];$CtrlUI.$m_ClassGroups=Array.prototype.slice.call(classGroups);this.$getClassInfoHandler($ctrlui_T_ECN_EOJ.x1_PROFILE,$ctrlui_T_ECN_EOJ.x2_NODE_PROFILE,ss.mkdel(this,this.$getClassInfoCallback));},$getClassInfoCallback:function(di){$CtrlUI.$m_ProfileClassInfo=di;},$getClassInfoHandler:function(x1,x2,cb){var eclass=Enumerable.from($CtrlUI.$m_Classes).firstOrDefault(function(p){return p.classGroup.classGroupCode===x1&&p.classCode===x2;},ss.getDefaultValue($ctrlui_JsonClassInfo));if(ss.isValue(eclass)){if(ss.isNullOrUndefined(eclass.properties)){this.$getPropertyList(eclass,cb);}
    236236else{cb(eclass);}
    237237return;}
     
    249249$control_UI.disable(this.get_setPropertyBtn(),true);},$listitem_Click:function(elem,ev,di){if(ss.isNullOrUndefined(this.get_propertyList())){return;}
    250250this.set_$m_CurrentNode(di);},$wampClientConnected:function(){var flag=this.get_connectionSwt().prop('checked');if(!flag){this.get_connectionSwt().prop('checked',true).flipswitch('refresh');}
    251 $control_UI.toggleClass(this.get_searchBtn(),'ui-icon-alert','ui-icon-refresh');this.$sendHello();},$wampClientDisconnected:function(){$control_UI.toggleClass(this.get_searchBtn(),'ui-icon-refresh','ui-icon-alert');},connect:function(ele,eve){var connect=$(ele).prop('checked');if(connect&&!this.$m_WampClient.isConnecting()){this.$m_WampClient.connect('ws://'+window.location.host+'/webapi.ashx');}
     251$control_UI.toggleClass(this.get_searchBtn(),'ui-icon-alert','ui-icon-refresh');this.$sendHello();},$wampClientDisconnected:function(){$control_UI.toggleClass(this.get_searchBtn(),'ui-icon-refresh','ui-icon-alert');},connect:function(ele,eve){var connect=$(ele).prop('checked');if(connect&&!this.$m_WampClient.isConnecting()){this.$m_WampClient.connect('ws://'+window.location.host+'/webapi');}
    252252else if(!connect&&this.$m_WampClient.isConnecting()){this.$m_WampClient.disconnect();}},disconnect:function(args){this.$m_WampClient.disconnect();},search:function(ele,ev){$(document).trigger($control_UIEventNames.searchStart);var data=this.$m_WampClient.sendCall('{}','com.sonycsl.kadecot.provider.procedure.getDeviceList',null,null,ss.mkdel(this,this.$onDevListed));if(ss.isNullOrUndefined(data)){$(document).trigger($control_UIEventNames.searchError);return;}
    253253this.$timerId=window.setInterval(function(){$(document).trigger($control_UIEventNames.searchError);},20000);},searchStart:function(ev){$.mobile.loading('show',new $LoadingOption.$ctor1('機器検索中...',true));$control_UI.disable(this.get_searchBtn(),true);},searchEnd:function(ev){if(this.$timerId!==0){window.clearInterval(this.$timerId);this.$timerId=0;}
     
    274274this.$propertyCreate(this.get_$m_CurrentNode());this.getProperty(ev);return;},$buttonDisabled:function(di){if(ss.isNullOrUndefined(di)){$control_UI.disable(this.get_setGetPropertyBtn(),true);$control_UI.disable(this.get_getPropertyBtn(),true);$control_UI.disable(this.get_setPropertyBtn(),true);return;}
    275275var ctrls=this.get_propertyList();$control_UI.disable(this.get_setGetPropertyBtn(),ss.isNullOrUndefined(ctrls));$control_UI.disable(this.get_getPropertyBtn(),ss.isNullOrUndefined(ctrls));$control_UI.disable(this.get_setPropertyBtn(),ss.isNullOrUndefined(ctrls));},$propertyCreate:function(di){if(ss.isNullOrUndefined(di)){return;}
    276 $(document).trigger($control_UIEventNames.propertyWriteStart);di.setUIDevice(this);this.get_propertyList().html('');this.get_propertyList().append(di.getPropertys());this.get_propertyList().listview().listview('refresh');this.get_propertyList().listview().trigger('create');$(document).trigger($control_UIEventNames.propertyWriteEnd);},$setInitParams:function(elem,e){var macaddrfrm=new RegExp('([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2})');var m=macaddrfrm.exec(this.get_macAddrTxt().val());if(ss.isNullOrUndefined(m)){return;}
    277 var ma1=parseInt(m[1],16);var ma2=parseInt(m[2],16);var ma3=parseInt(m[3],16);var ma4=parseInt(m[4],16);var ma5=parseInt(m[5],16);var ma6=parseInt(m[6],16);this.$m_WampClient.sendCall('{}','jp.toppers.ecnl.procedure.setInitParams','[]','{"macAddr":['+ma1+','+ma2+','+ma3+','+ma4+','+ma5+','+ma6+']}',ss.mkdel(this,this.setInitParamsRes));},setInitParamsRes:function(args){var cmd=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(cmd!==50){$('#popup_dialog_caption').text('エラー');$('#popup_dialog_title').text('エラーが発生しました');$('#popup_dialog_text').text('初期データの書き込みに失敗しました。');$('#popup_dialog').popup('open',{transition:'slidedown'});return;}
     276$(document).trigger($control_UIEventNames.propertyWriteStart);di.setUIDevice(this);this.get_propertyList().html('');this.get_propertyList().append(di.getPropertys());this.get_propertyList().listview().listview('refresh');this.get_propertyList().listview().trigger('create');$(document).trigger($control_UIEventNames.propertyWriteEnd);},$setInitParams:function(elem,e){var macaddrfrm=new RegExp('([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2})');var ipaddrfrm=new RegExp('([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})');var m=macaddrfrm.exec(this.get_macAddrTxt().val());if(ss.isNullOrUndefined(m)){return;}
     277var macAddr='"macAddr":['+parseInt(m[1],16)+','+parseInt(m[2],16)+','+parseInt(m[3],16)+','+parseInt(m[4],16)+','+parseInt(m[5],16)+','+parseInt(m[6],16)+']';var dhcpEnable='"dhcpEnable":'+this.get_dhcpEnableCb().prop('checked').toString();m=ipaddrfrm.exec(this.get_ipAddrTxt().val());if(ss.isNullOrUndefined(m)){return;}
     278var ipAddr='"ipAddr":['+parseInt(m[1])+','+parseInt(m[2])+','+parseInt(m[3])+','+parseInt(m[4])+']';m=ipaddrfrm.exec(this.get_netmaskTxt().val());if(ss.isNullOrUndefined(m)){return;}
     279var netmask='"netmask":['+parseInt(m[1])+','+parseInt(m[2])+','+parseInt(m[3])+','+parseInt(m[4])+']';m=ipaddrfrm.exec(this.get_gatewayTxt().val());if(ss.isNullOrUndefined(m)){return;}
     280var gateway='"gateway":['+parseInt(m[1])+','+parseInt(m[2])+','+parseInt(m[3])+','+parseInt(m[4])+']';this.$m_WampClient.sendCall('{}','jp.toppers.ecnl.procedure.setInitParams','[]','{'+macAddr+','+dhcpEnable+','+ipAddr+','+netmask+','+gateway+'}',ss.mkdel(this,this.setInitParamsRes));},setInitParamsRes:function(args){var cmd=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(cmd!==50){$('#popup_dialog_caption').text('エラー');$('#popup_dialog_title').text('エラーが発生しました');$('#popup_dialog_text').text('初期データの書き込みに失敗しました。');$('#popup_dialog').popup('open',{transition:'slidedown'});return;}
    278281$('#popup_dialog_caption').text('初期データ');$('#popup_dialog_title').text('初期データを書き込みました');$('#popup_dialog_text').text('初期データの書き込みに成功しました。');$('#popup_dialog').popup('open',{transition:'slidedown'});},$getInitParams:function(elem,e){this.$m_WampClient.sendCall('{}','jp.toppers.ecnl.procedure.getInitParams','[]','{}',ss.mkdel(this,this.getInitParamsRes));},getInitParamsRes:function(args){var cmd=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(cmd!==50){$('#popup_dialog_caption').text('エラー');$('#popup_dialog_title').text('エラーが発生しました');$('#popup_dialog_text').text('初期データの読み込みに失敗しました。');$('#popup_dialog').popup('open',{transition:'slidedown'});return;}
    279 var macaddr=ss.cast(ss.cast(args,Array)[4].macAddr,Array);this.get_macAddrTxt().val(ss.formatString('{0:X02}:{1:X02}:{2:X02}:{3:X02}:{4:X02}:{5:X02}',macaddr[0],macaddr[1],macaddr[2],macaddr[3],macaddr[4],macaddr[5]));},get_setPropertyBtn:function(){return $('#bt_set_property',$CtrlUI.$page);},get_getPropertyBtn:function(){return $('#bt_get_property',$CtrlUI.$page);},get_setGetPropertyBtn:function(){return $('#bt_set_get_property',$CtrlUI.$page);},get_kadecotBtn:function(){return $('#bt_kadecot',$CtrlUI.$page);},get_connectionSwt:function(){return $('#fs_connection',$CtrlUI.$page);},get_propertyList:function(){return $('#lv_property_list',$CtrlUI.$page);},get_searchBtn:function(){return $('#bt_search',$CtrlUI.$page);},get_nodeList:function(){return $('#node_list',$CtrlUI.$page);},get_propertyGroupBox:function(){return $('#lv_property_list',$CtrlUI.$page).find('li');},get_setInitParamsBtn:function(){return $('#bt_set_init_params',$CtrlUI.$page);},get_getInitParamsBtn:function(){return $('#bt_get_init_params',$CtrlUI.$page);},get_macAddrTxt:function(){return $('#txt_mac_addr',$CtrlUI.$page);},pinMode_Change:function(fieldset,pin){var value=fieldset.checkdValue();var dic=ss.mkdict(['pin',pin,'mode',value]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.pinMode','[]',JSON.stringify(dic),ss.mkdel(this,this.pinMode));},digital_Change:function(button,flipswitch,pin){var msg=new $ctrlui_WampApiKadecotSet(1,'2',new Array(2));var dic=ss.mkdict(['pin',pin,'value',flipswitch.get_value()]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.digitalWrite','[]',JSON.stringify(dic),ss.mkdel(this,this.digitalWrite));},analogWrite_Change:function(range,pin){var msg=new $ctrlui_WampApiKadecotSet(1,'2',new Array(2));var dic=ss.mkdict(['pin',pin,'value',range.get_value$1()]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.analogWrite','[]',JSON.stringify(dic),ss.mkdel(this,this.pinMode));},analogRead:function(range,pin){var dic=ss.mkdict(['pin',pin]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.analogRead','[]',JSON.stringify(dic),ss.mkdel(this,function(args){this.digitalRead$1(args,range);}));},pinMode:function(args){var switchData=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(switchData!==50){return;}
     282var param=ss.cast(args,Array)[4];var macaddr=ss.cast(param.macAddr,Array);this.get_macAddrTxt().val(ss.formatString('{0:X02}:{1:X02}:{2:X02}:{3:X02}:{4:X02}:{5:X02}',macaddr[0],macaddr[1],macaddr[2],macaddr[3],macaddr[4],macaddr[5]));var dhcpEnable=!!param.dhcpEnable;this.get_dhcpEnableCb().prop('checked',dhcpEnable).checkboxradio('refresh');var ipaddr=ss.cast(param.ipAddr,Array);this.get_ipAddrTxt().val(ss.formatString('{0}:{1}:{2}:{3}',ipaddr[0],ipaddr[1],ipaddr[2],ipaddr[3]));var netmask=ss.cast(param.netmask,Array);this.get_netmaskTxt().val(ss.formatString('{0}:{1}:{2}:{3}',netmask[0],netmask[1],netmask[2],netmask[3]));var gateway=ss.cast(param.gateway,Array);this.get_gatewayTxt().val(ss.formatString('{0}:{1}:{2}:{3}',gateway[0],gateway[1],gateway[2],gateway[3]));},get_setPropertyBtn:function(){return $('#bt_set_property',$CtrlUI.$page);},get_getPropertyBtn:function(){return $('#bt_get_property',$CtrlUI.$page);},get_setGetPropertyBtn:function(){return $('#bt_set_get_property',$CtrlUI.$page);},get_kadecotBtn:function(){return $('#bt_kadecot',$CtrlUI.$page);},get_connectionSwt:function(){return $('#fs_connection',$CtrlUI.$page);},get_propertyList:function(){return $('#lv_property_list',$CtrlUI.$page);},get_searchBtn:function(){return $('#bt_search',$CtrlUI.$page);},get_nodeList:function(){return $('#node_list',$CtrlUI.$page);},get_propertyGroupBox:function(){return $('#lv_property_list',$CtrlUI.$page).find('li');},get_setInitParamsBtn:function(){return $('#bt_set_init_params',$CtrlUI.$page);},get_getInitParamsBtn:function(){return $('#bt_get_init_params',$CtrlUI.$page);},get_macAddrTxt:function(){return $('#txt_mac_addr',$CtrlUI.$page);},get_dhcpEnableCb:function(){return $('#cb_dhcp_enable',$CtrlUI.$page);},get_ipAddrTxt:function(){return $('#txt_ip_addr',$CtrlUI.$page);},get_netmaskTxt:function(){return $('#txt_netmask',$CtrlUI.$page);},get_gatewayTxt:function(){return $('#txt_gateway',$CtrlUI.$page);},pinMode_Change:function(fieldset,pin){var value=fieldset.checkdValue();var dic=ss.mkdict(['pin',pin,'mode',value]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.pinMode','[]',JSON.stringify(dic),ss.mkdel(this,this.pinMode));},digital_Change:function(button,flipswitch,pin){var msg=new $ctrlui_WampApiKadecotSet(1,'2',new Array(2));var dic=ss.mkdict(['pin',pin,'value',flipswitch.get_value()]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.digitalWrite','[]',JSON.stringify(dic),ss.mkdel(this,this.digitalWrite));},analogWrite_Change:function(range,pin){var msg=new $ctrlui_WampApiKadecotSet(1,'2',new Array(2));var dic=ss.mkdict(['pin',pin,'value',range.get_value$1()]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.analogWrite','[]',JSON.stringify(dic),ss.mkdel(this,this.pinMode));},analogRead:function(range,pin){var dic=ss.mkdict(['pin',pin]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.analogRead','[]',JSON.stringify(dic),ss.mkdel(this,function(args){this.digitalRead$1(args,range);}));},pinMode:function(args){var switchData=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(switchData!==50){return;}
    280283var doc=ss.cast(args,Array)[4];if(ss.isValue(this.$m_DeviceController)){if(ss.isNullOrUndefined(this.get_propertyList())){return;}}},digitalWrite:function(args){var switchData=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(switchData!==50){return;}
    281284var doc=ss.cast(args,Array)[4];if(ss.isValue(this.$m_DeviceController)){if(ss.isNullOrUndefined(this.get_propertyList())){return;}}},digitalRead:function(button,flip,i){var dic=ss.mkdict(['pin',i]);var str=this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.digitalRead','[]',JSON.stringify(dic),ss.mkdel(this,function(arg){this.digitalRead$1(arg,flip);}));if(ss.isNullOrUndefined(str)){button.toggleClass$1('ui-icon-refresh','ui-icon-alert');}
  • uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/packages.config

    r101 r125  
    11<?xml version="1.0" encoding="utf-8"?>
    22<packages>
     3  <package id="Intelligencia.UrlRewriter" version="2.0.0.9" targetFramework="net45" />
    34  <package id="Saltarelle.Compiler" version="2.6.2" targetFramework="net45" />
    45  <package id="Saltarelle.jQuery" version="1.10.1" targetFramework="net45" />
  • uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/NiseWebSocket.csproj

    r101 r125  
    2121    <IISExpressUseClassicPipelineMode />
    2222    <NoStdLib>True</NoStdLib>
     23    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
     24    <RestorePackages>true</RestorePackages>
    2325  </PropertyGroup>
    2426  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     
    99101$(SolutionDir)tools\jsmin &lt; "$(ProjectDir)$(OutDir)$(TargetName).js" &gt; "$(SolutionDir)EcnlCtrlUI\js\nisews.min.js" "Copyright (C) 2015 by TOPPERS Project, Inc., JAPAN"</PostBuildEvent>
    100102  </PropertyGroup>
     103  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
    101104  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
    102105       Other similar extension points exist, see Microsoft.Common.targets.
Note: See TracChangeset for help on using the changeset viewer.