potion_party_leds/main/network.c

66 lines
1.8 KiB
C

#include "network.h"
#include "shared.h"
#include "parse.h"
#include <string.h>
#include <esp_wifi.h>
#include <esp_wifi_types.h>
#include <esp_event.h>
static
void on_station_connects(wifi_event_ap_staconnected_t* event) {
LOGLN("Station %d connected", event->aid);
}
static
void on_station_disconnects(wifi_event_ap_stadisconnected_t* event) {
LOGLN("Station %d disconnected", event->aid);
}
static
void on_wifi_event(void* arg, esp_event_base_t event_base,
int32_t event_id, void* event_data) {
switch(event_id) {
case WIFI_EVENT_AP_STACONNECTED:
on_station_connects(event_data);
break;
case WIFI_EVENT_AP_STADISCONNECTED:
on_station_disconnects(event_data);
break;
}
}
void wifi_init() {
LOGLN("Configuring WIFI");
// init tcp/ip stack
tcpip_adapter_init();
// initialize wifi
wifi_init_config_t wifi_startup = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init(&wifi_startup));
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &on_wifi_event, NULL));
LOGLN("WiFi initialized");
}
void softap_init() {
LOGLN("Starting wireless Access Point");
// set mode to wifi
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));
// configure wifi hardware to serve as a wifi access point
wifi_config_t accesspoint_startup_config = {
.ap = {
.ssid = SSID,
.ssid_len = strlen(SSID),
.password = PASSW,
.max_connection=32,
.authmode = WIFI_AUTH_WPA_WPA2_PSK
}
};
// configure with created startup config
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_AP, &accesspoint_startup_config));
// start wifi access point
ESP_ERROR_CHECK(esp_wifi_start());
LOGLN("Opened AP SSID: \"%s\" PW: \"%s\"", SSID, PASSW);
}