void Setup_Settings (void) { unsigned char data[6]; memset(data, 0x00, 6); if (strstr(SETTINGS_DATA[DHCP_ENABLE], "0")) { dhcp_disable(); sscanf(SETTINGS_DATA[IP_ADDRESS], "%d.%d.%d.%d", (int *)&data[0], (int *)&data[1], (int *)&data[2], (int *)&data[3]); memcpy(DEVICE_IP, data, 4); memset(data, 0x00, 4); sscanf(SETTINGS_DATA[SUBNET_MASK], "%d.%d.%d.%d", (int *)&data[0], (int *)&data[1], (int *)&data[2], (int *)&data[3]); memcpy(DEVICE_SUBNETMASK, data, 4); memset(data, 0x00, 4); sscanf(SETTINGS_DATA[DEFAULT_GATEWAY], "%d.%d.%d.%d", (int *)&data[0], (int *)&data[1], (int *)&data[2], (int *)&data[3]); memcpy(DEVICE_GATEWAY, data, 4); memset(data, 0x00, 4); sscanf(SETTINGS_DATA[PRI_DNS_ADDRESS], "%d.%d.%d.%d", (int *)&data[0], (int *)&data[1], (int *)&data[2], (int *)&data[3]); memcpy(DEVICE_PriDNS, data, 4); memset(data, 0x00, 4); sscanf(SETTINGS_DATA[SEC_DNS_ADDRESS], "%d.%d.%d.%d", (int *)&data[0], (int *)&data[1], (int *)&data[2], (int *)&data[3]); memcpy(DEVICE_SecDNS, data, 4); memset(data, 0x00, 4); } }
static void dhcp_check () { /* Monitor DHCP IP address assignment. */ if (tick == __FALSE || dhcp_tout == 0) { return; } #ifdef RTX_KERNEL tick = __FALSE; #endif if (mem_test (&MY_IP, 0, IP_ADRLEN) == __FALSE && !(dhcp_tout & 0x80000000)) { /* Success, DHCP has already got the IP address. */ dhcp_tout = 0; sprintf((char *)lcd_text[0],"IP address:"); sprintf((char *)lcd_text[1],"%d.%d.%d.%d", MY_IP[0], MY_IP[1], MY_IP[2], MY_IP[3]); LCDupdate = __TRUE; return; } if (--dhcp_tout == 0) { /* A timeout, disable DHCP and use static IP address. */ dhcp_disable (); sprintf((char *)lcd_text[1]," DHCP failed " ); LCDupdate = __TRUE; dhcp_tout = 30 | 0x80000000; return; } if (dhcp_tout == 0x80000000) { dhcp_tout = 0; sprintf((char *)lcd_text[0],"IP address:"); sprintf((char *)lcd_text[1],"%d.%d.%d.%d", MY_IP[0], MY_IP[1], MY_IP[2], MY_IP[3]); LCDupdate = __TRUE; } }
/***************************************************************************** ** Function name: void dhcp_check (void) ** ** Descriptions: verifica se há servidor DHCP na rede, se não houver então ** configuramos com ip estático ** ** parameters: None ** ** Returned value: None ** *****************************************************************************/ void dhcp_check (void) { U8 ip[4], mask[4], gateway[4],i; if (dhcp_tout == 0) return; if (mem_test (&MY_IP, 0, IP_ADRLEN) == __FALSE && !(dhcp_tout & 0x80000000)) { dhcp_tout = 0; tcp_state.bit.dhcp = __TRUE; printf("\r[IP (DHCP): %d.%d.%d.%d]\r", MY_IP[0], MY_IP[1], MY_IP[2], MY_IP[3]); printf("[MASK: %d.%d.%d.%d]\r", MY_MASK[0], MY_MASK[1], MY_MASK[2], MY_MASK[3]); printf("[GATEWAY: %d.%d.%d.%d]\r", MY_GATEWAY[0], MY_GATEWAY[1], MY_GATEWAY[2], MY_GATEWAY[3]); fflush (stdout); return; } if (--dhcp_tout == 0) { dhcp_disable (); dhcp_tout = 30 | 0x80000000; printf("\r[DHCP failed]\r" ); fflush (stdout); return; } if (dhcp_tout == 0x80000000) { inet_aton((U8*)cfg.tcp.static_ip,ip); inet_aton((U8*)cfg.tcp.mask,mask); inet_aton((U8*)cfg.tcp.gateway,gateway); dhcp_tout = 0; tcp_state.bit.dhcp = __FALSE; for(i=0;i<4;i++) { MY_IP[i] = ip[i]; MY_MASK[i] = mask[i]; MY_GATEWAY[i] = gateway[i]; } printf("\r[IP (STATIC): %d.%d.%d.%d]\r", MY_IP[0], MY_IP[1], MY_IP[2], MY_IP[3]); printf("[MASK: %d.%d.%d.%d]\r", MY_MASK[0], MY_MASK[1], MY_MASK[2], MY_MASK[3]); printf("[GATEWAY: %d.%d.%d.%d]\r", MY_GATEWAY[0], MY_GATEWAY[1], MY_GATEWAY[2], MY_GATEWAY[3]); fflush (stdout); return; } }