generated from Embedded_Projects/Landzo_K60Z_Hello
128 lines
3.6 KiB
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);
|
|
}
|
|
}
|