MCUXpresso SDK Documentation

middleware/nxp_iot_agent/ex/src/network/iot_agent_network_lwip_wifi.c

middleware/nxp_iot_agent/ex/src/network/iot_agent_network_lwip_wifi.c#

 1/*
 2 * Copyright 2018-2024 NXP
 3 *
 4 * SPDX-License-Identifier: Apache-2.0
 5 *
 6 */
 7
 8#include <nxp_iot_agent_status.h>
 9#include <nxp_iot_agent_log.h>
10
11#include "wpl.h"
12
13#ifndef AP_SSID
14#define AP_SSID "WiFi SSID"
15#endif
16
17#ifndef AP_PASSWORD
18#define AP_PASSWORD "WiFi Password"
19#endif
20
21
22#define WIFI_NETWORK_LABEL "el2go_agent_wifi"
23
24/* Link lost callback */
25static void LinkStatusChangeCallback(bool linkState)
26{
27    if (linkState == false)
28    {
29        /* -------- LINK LOST -------- */
30        /* DO SOMETHING */
31        IOT_AGENT_INFO("-------- LINK LOST --------\r\n");
32    }
33    else
34    {
35        /* -------- LINK REESTABLISHED -------- */
36        /* DO SOMETHING */
37        IOT_AGENT_INFO("-------- LINK REESTABLISHED --------\r\n");
38    }
39}
40
41/*!
42 * @brief The main task function
43 */
44iot_agent_status_t network_init(void)
45{
46    wpl_ret_t result = WPLRET_SUCCESS;
47
48    /* Initialize Wi-Fi board */
49    IOT_AGENT_INFO("Initializing Wi-Fi connection... \r\n");
50
51    result = WPL_Init();
52    if (result != WPLRET_SUCCESS)
53    {
54        IOT_AGENT_INFO("[!] WPL Init failed: %d\r\n", (uint32_t)result);
55        return IOT_AGENT_FAILURE;
56    }
57
58    result = WPL_Start(LinkStatusChangeCallback);
59    if (result != WPLRET_SUCCESS)
60    {
61        IOT_AGENT_INFO("[!] WPL Start failed %d\r\n", (uint32_t)result);
62        return IOT_AGENT_FAILURE;
63    }
64
65    IOT_AGENT_INFO("[i] Successfully initialized Wi-Fi module\r\n");
66
67    /* Add Wi-Fi network */
68    result = WPL_AddNetwork(AP_SSID, AP_PASSWORD, WIFI_NETWORK_LABEL);
69    if (result == WPLRET_SUCCESS)
70    {
71        IOT_AGENT_INFO("Connecting as client to ssid: %s\r\n", AP_SSID);
72        result = WPL_Join(WIFI_NETWORK_LABEL);
73    }
74
75    if (result != WPLRET_SUCCESS)
76    {
77	    IOT_AGENT_INFO("[!] Cannot connect to Wi-Fi\r\n[!]ssid: %s\r\n", AP_SSID);
78        return IOT_AGENT_FAILURE;
79    }
80    else
81    {
82	  	IOT_AGENT_INFO("[i] Connected to Wi-Fi\r\nssid: %s\r\n", AP_SSID);
83        char ip[16];
84        WPL_GetIP(ip, 1);
85    }
86
87    return IOT_AGENT_SUCCESS;
88
89}