Changeset 125 for uKadecot/trunk/kadecot/wamp_dealer.c
- Timestamp:
- Jul 23, 2015, 3:21:02 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uKadecot/trunk/kadecot/wamp_dealer.c
r108 r125 569 569 { 570 570 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"; 571 575 572 576 switch (state->level) { … … 579 583 if(strcmp(macAddr, dealer->s->jsn_buf) == 0){ 580 584 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; 582 613 } 583 614 break; … … 597 628 case WAMP_DEALER_STATE_MAC_ADDR_VALUE: 598 629 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); 599 639 break; 600 640 } … … 1777 1817 ECN_FBS_SSIZE_T pos = 0; 1778 1818 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); 1781 1829 if (ret != E_OK) { 1782 1830 syslog(LOG_WARNING, "data_flash_write() result = %d", ret); … … 1804 1852 1805 1853 dealer->error = NULL; 1854 } 1855 1856 static 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; 1806 1884 } 1807 1885 … … 1813 1891 ER ret; 1814 1892 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); 1817 1896 if (ret != E_OK) { 1818 1897 syslog(LOG_WARNING, "data_flash_read() result = %d", ret); … … 1820 1899 } 1821 1900 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 1822 1907 ret = _ecn_fbs_cre(1, &buf); 1823 1908 if (ret != E_OK) { … … 1826 1911 } 1827 1912 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\":["); 1829 1922 if (ret != E_OK) { 1830 1923 syslog(LOG_WARNING, "fbs_printf() result = %d", ret); … … 1845 1938 pos--; 1846 1939 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, "}]"); 1848 1983 if (ret != E_OK) { 1849 1984 syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
Note:
See TracChangeset
for help on using the changeset viewer.