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}