Skip to content

Instantly share code, notes, and snippets.

@Joannis
Last active November 11, 2025 13:21
Show Gist options
  • Select an option

  • Save Joannis/cdd294946074e5d9da54384ea68c01e5 to your computer and use it in GitHub Desktop.

Select an option

Save Joannis/cdd294946074e5d9da54384ea68c01e5 to your computer and use it in GitHub Desktop.
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift open source project
//
// Copyright (c) 2023 Apple Inc. and the Swift project authors.
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
//
//===----------------------------------------------------------------------===//
enum Globals {
static var eventGroup = xEventGroupCreate()
}
let WIFI_CONNECTED_BIT = BIT0
let WIFI_FAIL_BIT = BIT1
@_cdecl("app_main")
func main() {
print("Hello from Swift on ESP32-C6!")
// NEW
guard nvs_flash_init() == ESP_OK else {
print("Error initializing NVS")
return
}
guard esp_netif_init() == ESP_OK else {
print("Error initializing network")
return
}
guard esp_event_loop_create_default() == ESP_OK else {
print("Error creating event loop")
return
}
var wifiInitConfig = make_default_config()
esp_wifi_init(&wifiInitConfig)
var config = wifi_config_t(
sta: wifi_sta_config_t()
)
config.sta.threshold.authmode = WIFI_AUTH_WPA3_PSK
config.sta.pmf_cfg.capable = true
config.sta.pmf_cfg.required = false
let ssid = "workshop"
let password = "workshop"
strncpy(&config.sta.ssid, ssid, ssid.utf8CString.count)
strncpy(&config.sta.password, password, password.utf8CString.count)
guard esp_wifi_set_mode(WIFI_MODE_STA) == ESP_OK else {
print("Error setting wifi mode")
return
}
guard esp_wifi_set_config(WIFI_IF_STA, &config) == ESP_OK else {
print("Error setting wifi config")
return
}
let error = esp_event_handler_instance_register(
WIFI_EVENT,
ESP_EVENT_ANY_ID,
{ (arg, eventBase, eventId: Int32, eventData) in
print("WIFI_EVENT: \(eventId)")
if eventId == Int32(WIFI_EVENT_STA_START.rawValue) {
print("WIFI_EVENT_STA_START")
xEventGroupSetBits(Globals.eventGroup, EventBits_t(WIFI_CONNECTED_BIT));
} else if eventId == Int32(WIFI_EVENT_STA_DISCONNECTED.rawValue) {
print("WIFI_EVENT_STA_DISCONNECTED")
xEventGroupSetBits(Globals.eventGroup, EventBits_t(WIFI_FAIL_BIT));
}
},
nil,
nil
)
guard error == ESP_OK else {
print("Error registering event handler")
return
}
guard esp_wifi_start() == ESP_OK else {
print("Error starting wifi")
return
}
print("Connecting to wifi")
let bits = xEventGroupWaitBits(
Globals.eventGroup,
EventBits_t(WIFI_CONNECTED_BIT | WIFI_FAIL_BIT),
pdFALSE, pdFALSE, portMAX_DELAY
)
if bits & EventBits_t(WIFI_CONNECTED_BIT) != 0 {
print("connected to ap SSID")
} else if bits & EventBits_t(WIFI_FAIL_BIT) != 0 {
print("Failed to connect to SSID")
} else {
print("UNEXPECTED EVENT")
}
let n = 1
let gpioPin = 8
let ledStrip = LedStrip(gpioPin: gpioPin, maxLeds: n)
ledStrip.clear()
while true {
for index in 0..<n {
ledStrip.setPixel(index: index, color: .init(r: 255, g: 0, b: 0))
}
ledStrip.refresh()
vTaskSleepMs(500)
}
}
func vTaskSleepMs(_ ms: UInt32) {
vTaskDelay(ms / (1000 / UInt32(configTICK_RATE_HZ)))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment