Last active
November 11, 2025 13:21
-
-
Save Joannis/cdd294946074e5d9da54384ea68c01e5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //===----------------------------------------------------------------------===// | |
| // | |
| // 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