Landzo_K60Z_LwIP/src/main.c

128 lines
3.6 KiB
C

#include "board.h"
#include "clock_config.h"
#include "peripherals.h"
#include "pin_mux.h"
/* Console */
#include "fsl_debug_console.h"
/* MISC */
#include "system_utilities.h"
/*FreeRTOS*/
#include "FreeRTOS.h"
#include "task.h"
/* LwIP */
#include "lwip/dhcp.h"
#include "lwip/prot/dhcp.h"
#include "lwip/tcpip.h"
/* ENET */
#include "ethernetif.h"
static struct netif fsl_netif0;
static void vTaskHello(void *pvParameters);
int main(void) {
BOARD_InitBootPins();
BOARD_BootClockRUN();
BOARD_InitBootPeripherals();
BOARD_InitDebugConsole();
print_hardware();
sram_test();
xTaskCreate(vTaskHello, "HELLO", 256, NULL, 4, NULL);
vTaskStartScheduler();
for (;;) {
__WFI();
}
}
static void setup_lwip(void) {
ip4_addr_t fsl_netif0_ipaddr, fsl_netif0_netmask, fsl_netif0_gw;
SYSMPU->CESR &= ~(SYSMPU_CESR_VLD_MASK); /* Disable MPU */
tcpip_init(NULL, NULL);
netif_add(&fsl_netif0, &fsl_netif0_ipaddr, &fsl_netif0_netmask, &fsl_netif0_gw, NULL, ethernetif_init, tcpip_input);
netif_set_default(&fsl_netif0);
netif_set_up(&fsl_netif0);
dhcp_start(&fsl_netif0);
}
static void print_dhcp_state(struct netif *netif) {
static u8_t dhcp_last_state = DHCP_STATE_OFF;
struct dhcp *dhcp = (struct dhcp *)netif_get_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP);
if (dhcp_last_state != dhcp->state) {
dhcp_last_state = dhcp->state;
PRINTF(" DHCP state : ");
switch (dhcp_last_state) {
case DHCP_STATE_OFF:
PRINTF("OFF");
break;
case DHCP_STATE_REQUESTING:
PRINTF("REQUESTING");
break;
case DHCP_STATE_INIT:
PRINTF("INIT");
break;
case DHCP_STATE_REBOOTING:
PRINTF("REBOOTING");
break;
case DHCP_STATE_REBINDING:
PRINTF("REBINDING");
break;
case DHCP_STATE_RENEWING:
PRINTF("RENEWING");
break;
case DHCP_STATE_SELECTING:
PRINTF("SELECTING");
break;
case DHCP_STATE_INFORMING:
PRINTF("INFORMING");
break;
case DHCP_STATE_CHECKING:
PRINTF("CHECKING");
break;
case DHCP_STATE_BOUND:
PRINTF("BOUND");
break;
case DHCP_STATE_BACKING_OFF:
PRINTF("BACKING_OFF");
break;
default:
PRINTF("%u", dhcp_last_state);
assert(0);
break;
}
PRINTF("\r\n");
if (dhcp_last_state == DHCP_STATE_BOUND) {
PRINTF("\r\n IPv4 Address : %u.%u.%u.%u\r\n", ((u8_t *)&netif->ip_addr.u_addr)[0],
((u8_t *)&netif->ip_addr.u_addr)[1], ((u8_t *)&netif->ip_addr.u_addr)[2],
((u8_t *)&netif->ip_addr.u_addr)[3]);
PRINTF(" IPv4 Subnet mask : %u.%u.%u.%u\r\n", ((u8_t *)&netif->netmask.u_addr)[0],
((u8_t *)&netif->netmask.u_addr)[1], ((u8_t *)&netif->netmask.u_addr)[2],
((u8_t *)&netif->netmask.u_addr)[3]);
PRINTF(" IPv4 Gateway : %u.%u.%u.%u\r\n\r\n", ((u8_t *)&netif->gw.u_addr)[0],
((u8_t *)&netif->gw.u_addr)[1], ((u8_t *)&netif->gw.u_addr)[2], ((u8_t *)&netif->gw.u_addr)[3]);
}
}
}
static void vTaskHello(void *pvParameters) {
setup_lwip();
for (;;) {
vTaskDelay(pdMS_TO_TICKS(1000));
print_dhcp_state(&fsl_netif0);
}
}