Changeset 125


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
Files:
2 added
2 deleted
18 edited

Legend:

Unmodified
Added
Removed
  • uKadecot/trunk/ecnl_ssp/echonet_task.c

    r108 r125  
    157157static void _ecn_tsk_ecn_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id);
    158158
    159 static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
     159static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    160160        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
    161161        ECN_FBS_ID *fa_fbs_anno);
     
    164164static void _ecn_tsk_eoj_res(ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv,
    165165        ECN_SRV_CODE fa_sna_esv);
    166 static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr,
     166static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp,
    167167        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
    168168        ECN_FBS_ID *fa_fbs_anno);
    169 static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr,
     169static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp,
    170170        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno);
    171171
     
    775775                if ((p_eoj->eojx1 == EOJ_X1_PROFILE)
    776776                        && (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) {
    777                         /* 電文処理実行 */
    778                         if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
    779                                 a_fwd = true;
    780                         a_prc = true;
     777                        if ((p_eoj->eojx3 == p_nod->profile->eojx3)
     778                                || (p_eoj->eojx3 == 0)) {
     779                                /* 電文処理実行 */
     780                                if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
     781                                        a_fwd = true;
     782                                a_prc = true;
     783                        }
     784                        /* 0x74 プロパティ値通知(応答要)の場合処理したことにする */
     785                        else if (p_esv->edata.esv == ESV_INFC) {
     786                                a_prc = true;
     787                        }
    781788                }
    782789                /* 機器オブジェクトの場合 */
     
    843850        T_ECN_EDT_HDR   *p_esv;
    844851        ECN_FBS_ID              a_fbs_anno = { NULL };
     852        bool_t fromapp = sobjatr == EOBJ_LOCAL_NODE;
    845853
    846854        p_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
     
    855863                        break;
    856864                }
    857                 _ecn_tsk_eoj_set(p_obj, eobjatr, false, fa_fbs_id, ESV_NOP, ESV_SET_I_SNA, &a_fbs_anno);        /* 0; 0x50 */
     865                _ecn_tsk_eoj_set(p_obj, eobjatr, fromapp, false, fa_fbs_id, ESV_NOP, ESV_SET_I_SNA, &a_fbs_anno);       /* 0; 0x50 */
    858866                result = 0;
    859867                break;
     
    867875                        break;
    868876                }
    869                 _ecn_tsk_eoj_set(p_obj, eobjatr, false, fa_fbs_id, ESV_SET_RES, ESV_SET_C_SNA, &a_fbs_anno); /* 0x71; 0x51 */
     877                _ecn_tsk_eoj_set(p_obj, eobjatr, fromapp, false, fa_fbs_id, ESV_SET_RES, ESV_SET_C_SNA, &a_fbs_anno); /* 0x71; 0x51 */
    870878                result = 0;
    871879                break;
     
    904912                        break;
    905913                }
    906                 _ecn_tsk_eoj_set_get(p_obj, eobjatr, fa_fbs_id, ESV_SET_GET_RES, ESV_SET_GET_SNA, &a_fbs_anno); /* 0x7E; 0x5E */
     914                _ecn_tsk_eoj_set_get(p_obj, eobjatr, fromapp, fa_fbs_id, ESV_SET_GET_RES, ESV_SET_GET_SNA, &a_fbs_anno); /* 0x7E; 0x5E */
    907915                result = 0;
    908916                break;
     
    912920                if (!p_sobj)
    913921                        _ecn_tsk_eoj_res(fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES); /* 0x74; 0 */
    914                 else if (sobjatr == EOBJ_LOCAL_NODE)
     922                else if (fromapp)
    915923                        _ecn_tsk_eoj_get(p_sobj, sobjatr, true, (EPC_RULE_GET|EPC_RULE_ANNO), fa_fbs_id, ESV_INFC, ESV_NOP); /* 0x74; 0 */
    916924                else
    917                         _ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0 */
     925                        _ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0 */
    918926                result = 0;
    919927                break;
     
    939947                        break;
    940948                }
    941                 _ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
     949                _ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
    942950                result = 1;
    943951                break;
     
    952960                        break;
    953961                }
    954                 _ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
     962                _ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
    955963                result = 1;
    956964                break;
     
    965973                        break;
    966974                }
    967                 _ecn_tsk_eoj_set_get_res(p_sobj, sobjatr, fa_fbs_id, &a_fbs_anno); /* 0x7A; 0 */
     975                _ecn_tsk_eoj_set_get_res(p_sobj, sobjatr, fromapp, fa_fbs_id, &a_fbs_anno); /* 0x7A; 0 */
    968976                result = 1;
    969977                break;
     
    11161124}
    11171125
    1118 static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
     1126static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    11191127        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
    11201128        int *p_sw_ok);
    11211129/* プロパティ値書き込み実行 */
    1122 static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
     1130static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    11231131        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
    11241132        int *p_sw_ok)
     
    11471155                a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
    11481156                if ((a_eprp != NULL)
    1149                         && (fa_update || (((a_eprp->eprpatr & EPC_RULE_SET) != 0) || (fa_eobjatr == EOBJ_LOCAL_NODE)))) {
     1157                        && (fa_update || (((a_eprp->eprpatr & EPC_RULE_SET) != 0) || fa_fromapp))) {
    11501158                        a_anno = (fa_eobjatr == EOBJ_LOCAL_NODE) && ((a_eprp->eprpatr & EPC_ANNOUNCE) != 0);
    11511159                        a_update = a_anno;
     
    14261434
    14271435/* プロパティ値書き込み要求 */
    1428 static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
     1436static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    14291437        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
    14301438        ECN_FBS_ID *fa_fbs_anno)
     
    14791487
    14801488        /* プロパティ値書き込み実行 */
    1481         a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_update, fa_fbs_id, a_fbs_res,
     1489        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, fa_update, fa_fbs_id, a_fbs_res,
    14821490                fa_fbs_anno, p_req_esv->edata.opc, &a_sw_ok);
    14831491        if (a_ret)
     
    16951703}
    16961704
    1697 static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr,
     1705static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp,
    16981706        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
    16991707        ECN_FBS_ID *fa_fbs_anno)
     
    17451753
    17461754        /* プロパティ値書き込み実行 */
    1747         a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, false, fa_fbs_id, a_fbs_res,
     1755        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, false, fa_fbs_id, a_fbs_res,
    17481756                fa_fbs_anno, a_count, &a_sw_ok);
    17491757        if (a_ret) {
     
    18191827
    18201828static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr,
    1821         ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno)
     1829        bool_t fa_fromapp, ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno)
    18221830{
    18231831        T_ECN_EDT_HDR   const *p_req_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
     
    18721880
    18731881        /* プロパティ値読み出し応答の書き込み実行 */
    1874         a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, true, fa_fbs_id, a_fbs_dmy,
     1882        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, true, fa_fbs_id, a_fbs_dmy,
    18751883                                                                  fa_fbs_anno, a_count, &a_sw_ok);
    18761884        if (a_ret) {
  • uKadecot/trunk/kadecot/wamp_dealer.c

    r108 r125  
    569569{
    570570        static const char macAddr[] = "macAddr";
     571        static const char dhcpEnable[] = "dhcpEnable";
     572        static const char ipAddr[] = "ipAddr";
     573        static const char netmask[] = "netmask";
     574        static const char gateway[] = "gateway";
    571575
    572576        switch (state->level) {
     
    579583                                if(strcmp(macAddr, dealer->s->jsn_buf) == 0){
    580584                                        dealer->state = WAMP_DEALER_STATE_MAC_ADDR_VALUE;
    581                                         memset(&dealer->init_params, 0, sizeof(dealer->init_params));
     585                                        dealer->init_params.pos = 0;
     586                                        memset(&dealer->init_params.mac_addr, 0, sizeof(dealer->init_params.mac_addr));
     587                                }
     588                                if(strcmp(dhcpEnable, dealer->s->jsn_buf) == 0){
     589                                        dealer->state = WAMP_DEALER_STATE_DHCP_ENABLE_VALUE;
     590                                        dealer->init_params.dhcp_enable = false;
     591                                }
     592                                if(strcmp(ipAddr, dealer->s->jsn_buf) == 0){
     593                                        dealer->state = WAMP_DEALER_STATE_IP_ADDR_VALUE;
     594                                        dealer->init_params.pos = 0;
     595                                        memset(&dealer->init_params.ip_addr, 0, sizeof(dealer->init_params.ip_addr));
     596                                }
     597                                if(strcmp(netmask, dealer->s->jsn_buf) == 0){
     598                                        dealer->state = WAMP_DEALER_STATE_NETMASK_VALUE;
     599                                        dealer->init_params.pos = 0;
     600                                        memset(&dealer->init_params.netmask, 0, sizeof(dealer->init_params.netmask));
     601                                }
     602                                if(strcmp(gateway, dealer->s->jsn_buf) == 0){
     603                                        dealer->state = WAMP_DEALER_STATE_GATEWAY_VALUE;
     604                                        dealer->init_params.pos = 0;
     605                                        memset(&dealer->init_params.gateway, 0, sizeof(dealer->init_params.gateway));
     606                                }
     607                                break;
     608                        case JSONSL_T_SPECIAL:
     609                                switch(dealer->state){
     610                                case WAMP_DEALER_STATE_DHCP_ENABLE_VALUE:
     611                                        dealer->init_params.dhcp_enable = strcmp("true", dealer->s->jsn_buf) == 0;
     612                                        break;
    582613                                }
    583614                                break;
     
    597628                                case WAMP_DEALER_STATE_MAC_ADDR_VALUE:
    598629                                        dealer->init_params.mac_addr[dealer->init_params.pos++] = atoi(dealer->s->jsn_buf);
     630                                        break;
     631                                case WAMP_DEALER_STATE_IP_ADDR_VALUE:
     632                                        dealer->init_params.ip_addr[dealer->init_params.pos++] = atoi(dealer->s->jsn_buf);
     633                                        break;
     634                                case WAMP_DEALER_STATE_NETMASK_VALUE:
     635                                        dealer->init_params.netmask[dealer->init_params.pos++] = atoi(dealer->s->jsn_buf);
     636                                        break;
     637                                case WAMP_DEALER_STATE_GATEWAY_VALUE:
     638                                        dealer->init_params.gateway[dealer->init_params.pos++] = atoi(dealer->s->jsn_buf);
    599639                                        break;
    600640                                }
     
    17771817        ECN_FBS_SSIZE_T pos = 0;
    17781818        ER ret;
    1779 
    1780         ret = data_flash_write(0, dealer->init_params.mac_addr);
     1819        uint8_t data[32];
     1820
     1821        memset(data, 0, sizeof(data));
     1822        memcpy(&data[0], dealer->init_params.mac_addr, sizeof(dealer->init_params.mac_addr));
     1823        data[6] = dealer->init_params.dhcp_enable ? 1 : 0;
     1824        memcpy(&data[7], dealer->init_params.ip_addr, sizeof(dealer->init_params.ip_addr));
     1825        memcpy(&data[11], dealer->init_params.netmask, sizeof(dealer->init_params.netmask));
     1826        memcpy(&data[15], dealer->init_params.gateway, sizeof(dealer->init_params.gateway));
     1827
     1828        ret = data_flash_write(0, data);
    17811829        if (ret != E_OK) {
    17821830                syslog(LOG_WARNING, "data_flash_write() result = %d", ret);
     
    18041852
    18051853        dealer->error = NULL;
     1854}
     1855
     1856static ER wamp_dealer_write_ip_addr(struct wamp_dealer *dealer, ECN_FBS_ID buf,
     1857        ECN_FBS_SSIZE_T *pos, uint8_t *ip_addr, char *name)
     1858{
     1859        ER ret;
     1860        int i;
     1861
     1862        /* IPアドレス */
     1863        ret = fbs_printf(buf, pos, "\"%s\":[", name);
     1864        if (ret != E_OK) {
     1865                return ret;
     1866        }
     1867
     1868        for (i = 0; i < 4; i++) {
     1869                ret = fbs_printf(buf, pos, "%d,", ip_addr[i]);
     1870                if (ret != E_OK) {
     1871                        return ret;
     1872                }
     1873        }
     1874
     1875        /* 最後の","を消す */
     1876        *pos = *pos - 1;
     1877
     1878        ret = fbs_printf(buf, pos, "],");
     1879        if (ret != E_OK) {
     1880                return ret;
     1881        }
     1882
     1883        return E_OK;
    18061884}
    18071885
     
    18131891        ER ret;
    18141892        int i;
    1815 
    1816         ret = data_flash_read(0, dealer->init_params.mac_addr);
     1893        uint8_t data[32];
     1894
     1895        ret = data_flash_read(0, data);
    18171896        if (ret != E_OK) {
    18181897                syslog(LOG_WARNING, "data_flash_read() result = %d", ret);
     
    18201899        }
    18211900
     1901        memcpy(dealer->init_params.mac_addr, &data[0], sizeof(dealer->init_params.mac_addr));
     1902        dealer->init_params.dhcp_enable = data[6] != 0;
     1903        memcpy(dealer->init_params.ip_addr, &data[7], sizeof(dealer->init_params.ip_addr));
     1904        memcpy(dealer->init_params.netmask, &data[11], sizeof(dealer->init_params.netmask));
     1905        memcpy(dealer->init_params.gateway, &data[15], sizeof(dealer->init_params.gateway));
     1906
    18221907        ret = _ecn_fbs_cre(1, &buf);
    18231908        if (ret != E_OK) {
     
    18261911        }
    18271912
    1828         ret = fbs_printf(buf, &pos, "[50,%d,{},[],{\"macAddr\":[", dealer->requestId);
     1913        ret = fbs_printf(buf, &pos, "[50,%d,{},[],{", dealer->requestId);
     1914        if (ret != E_OK) {
     1915                syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
     1916                _ecn_fbs_del(buf);
     1917                return;
     1918        }
     1919
     1920        /* MACアドレス */
     1921        ret = fbs_printf(buf, &pos, "\"macAddr\":[");
    18291922        if (ret != E_OK) {
    18301923                syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
     
    18451938        pos--;
    18461939
    1847         ret = fbs_printf(buf, &pos, "]}]");
     1940        ret = fbs_printf(buf, &pos, "],");
     1941        if (ret != E_OK) {
     1942                syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
     1943                _ecn_fbs_del(buf);
     1944                return;
     1945        }
     1946
     1947        /* DHCP有効/無効 */
     1948        ret = fbs_printf(buf, &pos, "\"dhcpEnable\":%s,", dealer->init_params.dhcp_enable ? "true" : "false");
     1949        if (ret != E_OK) {
     1950                syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
     1951                _ecn_fbs_del(buf);
     1952                return;
     1953        }
     1954
     1955        /* IPアドレス */
     1956        ret = wamp_dealer_write_ip_addr(dealer, buf, &pos, dealer->init_params.ip_addr, "ipAddr");
     1957        if (ret != E_OK) {
     1958                syslog(LOG_WARNING, "wamp_dealer_write_ip_addr() result = %d", ret);
     1959                _ecn_fbs_del(buf);
     1960                return;
     1961        }
     1962
     1963        /* サブネットマスク */
     1964        ret = wamp_dealer_write_ip_addr(dealer, buf, &pos, dealer->init_params.netmask, "netmask");
     1965        if (ret != E_OK) {
     1966                syslog(LOG_WARNING, "wamp_dealer_write_ip_addr() result = %d", ret);
     1967                _ecn_fbs_del(buf);
     1968                return;
     1969        }
     1970
     1971        /* デフォルトゲートウェイ */
     1972        ret = wamp_dealer_write_ip_addr(dealer, buf, &pos, dealer->init_params.gateway, "gateway");
     1973        if (ret != E_OK) {
     1974                syslog(LOG_WARNING, "wamp_dealer_write_ip_addr() result = %d", ret);
     1975                _ecn_fbs_del(buf);
     1976                return;
     1977        }
     1978
     1979        /* 最後の","を消す */
     1980        pos--;
     1981
     1982        ret = fbs_printf(buf, &pos, "}]");
    18481983        if (ret != E_OK) {
    18491984                syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
  • uKadecot/trunk/kadecot/wamp_dealer.h

    r108 r125  
    5353        WAMP_DEALER_STATE_ANALOG_VALUE,
    5454        WAMP_DEALER_STATE_MAC_ADDR_VALUE,
     55        WAMP_DEALER_STATE_DHCP_ENABLE_VALUE,
     56        WAMP_DEALER_STATE_IP_ADDR_VALUE,
     57        WAMP_DEALER_STATE_NETMASK_VALUE,
     58        WAMP_DEALER_STATE_GATEWAY_VALUE,
    5559} wamp_dealer_state_t;
    5660
     
    110114typedef struct wamp_dealer_init_params{
    111115        int pos;
    112         uint8_t mac_addr[32]; /* DATA FLASHのサイズ分 */
     116        uint8_t mac_addr[6];
     117        bool_t dhcp_enable;
     118        uint8_t ip_addr[4];
     119        uint8_t netmask[4];
     120        uint8_t gateway[4];
    113121} wamp_dealer_init_params_t;
    114122
  • uKadecot/trunk/src/ukadecot/main.c

    r108 r125  
    6565
    6666uint8_t mac_addr[6] = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xB8 };
     67bool_t dhcp_enable = true;
    6768
    6869#define MAKER_CODE      0x00, 0x00, 0xB3        /* TOPPERSプロジェクト */
     
    339340                /* 応答電文待ちの割り込みの場合 */
    340341                else if (ret == E_BRK) {
    341                         ECN_FBS_ID msg = { (T_ECN_FST_BLK       *)esv };
     342                        ECN_FBS_ID msg = { (T_ECN_FST_BLK *)esv };
    342343                        bool_t rel_msg = true;
    343344                        switch (msg.ptr->hdr.type) {
     
    433434static void main_initialize()
    434435{
     436        extern u8_t my_ip[4];
     437        extern u8_t my_netmask[4];
     438        extern u8_t my_default_router[4];
    435439        uint8_t btn1, btn2;
    436440        uint8_t data[32], c;
     
    443447
    444448        ret = data_flash_init();
    445 
    446449        while(ret == E_OK){
    447450                ret = data_flash_read(0, data);
     
    452455                dflt_addr = false;
    453456                memcpy(mac_addr, data, sizeof(mac_addr));
     457                dhcp_enable = data[sizeof(mac_addr)] != 0;
     458                memcpy(my_ip, &data[sizeof(mac_addr) + 1], sizeof(my_ip));
     459                memcpy(my_netmask, &data[sizeof(mac_addr) + 5], sizeof(my_netmask));
     460                memcpy(my_default_router, &data[sizeof(mac_addr) + 9], sizeof(my_default_router));
    454461                break;
    455462        }
     
    464471        data[--j] = '\0';
    465472
    466         syslog(LOG_INFO, "mac_addr %s %s", data, dflt_addr ? "default" : "flash-rom");
     473        syslog(LOG_INFO, "mac_addr %s %s %s", data, dflt_addr ? "default" : "flash-rom", dhcp_enable ? "dhcp" : "static");
    467474
    468475        /* uIPを開始 */
  • 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.
  • uKadecot/trunk/uip/apps/dhcpc/dhcpc.c

    r108 r125  
    4141
    4242#define STATE_INITIAL         0
    43 #define STATE_SENDING         1
    44 #define STATE_OFFER_RECEIVED  2
    45 #define STATE_CONFIG_RECEIVED 3
     43#define STATE_REQUEST         1
     44#define STATE_SENDING         2
     45#define STATE_OFFER_RECEIVED  3
     46#define STATE_CONFIG_RECEIVED 4
    4647
    4748#ifdef __RX
     
    261262  PT_BEGIN(&s->pt);
    262263
     264  if(s->state != STATE_REQUEST)
     265    PT_YIELD(&s->pt);
     266
    263267  /* try_again:*/
    264268  s->state = STATE_SENDING;
    265269  s->ticks = 5 * CLOCK_SECOND;
    266270
    267   send_discover(s);
    268   timer_set(&s->timer, s->ticks);
    269 
    270271  do {
     272    printf("send_discover(%d)\n", s->timer);
     273    send_discover(s);
     274    timer_set(&s->timer, s->ticks);
     275
    271276    PT_WAIT_UNTIL(&s->pt, (ret = uip_newdata() ? 1 : (timer_expired(&s->timer) ? 2 : 0)) != 0);
    272277
     
    288293  PT_YIELD(&s->pt);
    289294
    290   send_request(s);
    291   timer_set(&s->timer, s->ticks);
    292 
    293295  do {
     296    printf("send_request(%d)\n", s->timer);
     297    send_request(s);
     298    timer_set(&s->timer, s->ticks);
     299
    294300    PT_WAIT_UNTIL(&s->pt, (ret = uip_newdata() ? 1 : (timer_expired(&s->timer) ? 2 : 0)) != 0);
    295301
     
    382388  u16_t ipaddr[2];
    383389
    384   s->state = STATE_INITIAL;
     390  s->state = STATE_REQUEST;
    385391  uip_ipaddr(ipaddr, 0,0,0,0);
    386392  uip_sethostaddr(ipaddr);
  • uKadecot/trunk/uip/apps/webserver/httpd-fs/index.html

    r101 r125  
    3030                        <h1 id="header_logo" style="margin: 0px; text-align: left; background-color: white;">
    3131                                <a target='_blank' href="http://www.toppers.jp/index.html">
    32                                         <img src="./imgs/logo.gif" width="353" height="74" border="0" alt="TOPPERS LOGO">
     32                                        <img src="./imgs/logo.png" width="353" height="74" border="0" alt="TOPPERS LOGO">
    3333                                </a>
    3434                        </h1>
     
    9595                        <label for="txt_mac_addr">MACアドレス</label>
    9696                        <input name="txt_mac_addr" id="txt_mac_addr" value="12:34:56:78:9A:BC" type="text">
     97                        <label for="cb_dhcp_enable">DHCP有効</label>
     98                        <input name="cb_dhcp_enable" id="cb_dhcp_enable" type="checkbox">
     99                        <label for="txt_ip_addr">IPアドレス</label>
     100                        <input name="txt_ip_addr" id="txt_ip_addr" value="192.168.2.103" type="text">
     101                        <label for="txt_netmask">サブネットマスク</label>
     102                        <input name="txt_netmask" id="txt_netmask" value="255.255.255.0" type="text">
     103                        <label for="txt_gateway">デフォルトゲートウェイ</label>
     104                        <input name="txt_gateway" id="txt_gateway" value="192.168.2.1" type="text">
    97105                        <button id="bt_set_init_params" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-check ui-btn-c">
    98106                                設定
  • uKadecot/trunk/uip/task/uip_task.c

    r108 r125  
    8282int uip_out_wpos = 0;
    8383int uip_out_rpos = 0;
    84 const u8_t my_ip[4] = { IPV4_ADDR_LOCAL };
    85 const u8_t my_netmask[4] = { IPV4_ADDR_LOCAL_MASK };
    86 const u8_t my_default_router[4] = { IPV4_ADDR_DEFAULT_GW };
     84u8_t my_ip[4] = { IPV4_ADDR_LOCAL };
     85u8_t my_netmask[4] = { IPV4_ADDR_LOCAL_MASK };
     86u8_t my_default_router[4] = { IPV4_ADDR_DEFAULT_GW };
    8787int ws_out_req;
    8888int ws_out_res;
    8989#ifdef __DHCPC_H__
    9090struct dhcpc_state *dhcpc;
     91extern bool_t dhcp_enable;
    9192#endif
    9293
     
    113114        uip_init();
    114115#ifdef __DHCPC_H__
    115         dhcpc = dhcpc_init(uip_ethaddr.addr, sizeof(uip_ethaddr.addr));
     116        if(dhcp_enable){
     117                dhcpc = dhcpc_init(uip_ethaddr.addr, sizeof(uip_ethaddr.addr));
     118        }
    116119#endif
    117120        uip_task_init((intptr_t)uiptsk);
     
    132135                                ic->link_pre = ic->link_now;
    133136                                if(cng && ic->link_pre){
    134                                         sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) | 0x04);
    135137#ifdef __DHCPC_H__
    136                                         uip_buf = uiptsk->uip_buf;
    137                                         uip_len = 0;
    138                                         dhcpc_request(dhcpc);
    139                                         /* If the above function invocation resulted in data that
    140                                                 should be sent out on the network, the global variable
    141                                                 uip_len is set to a value > 0. */
    142                                         if (uip_len > 0) {
    143                                                 uip_arp_out();
    144                                                 IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     138                                        if(dhcp_enable){
     139                                                sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) | 0x04);
     140                                                uip_buf = uiptsk->uip_buf;
     141                                                uip_len = 0;
     142                                                dhcpc_request(dhcpc);
     143                                                /* If the above function invocation resulted in data that
     144                                                        should be sent out on the network, the global variable
     145                                                        uip_len is set to a value > 0. */
     146                                                if (uip_len > 0) {
     147                                                        uip_arp_out();
     148                                                        IF_ETHER_NIC_START(ic, uip_buf, uip_len);
     149                                                }
     150                                        }
     151                                        else{
     152                                                DHCP4_CLI_SET_ADDR_CALLBACK();
    145153                                        }
    146154#else
Note: See TracChangeset for help on using the changeset viewer.