#include #include "badge/config.h" #include "badge/ble.h" #include "badge/display.h" #include "badge/gpio.h" #include "badge/log.h" #if defined(BADGE_SSID_NAME) && defined(BADGE_SSID_PASS) #include #define BADGE_USE_WIFI 1 #else #define BADGE_USE_WIFI 0 #endif #define PRESS_TIME_DRAW 1000 #define PRESS_TIME_BLE_ADV 3000 #define SLEEP_TIME 10000 void setup() { Serial.begin(115200); Serial.println("Yes, it works!"); LOG_F("XTAL freq is %u\n", getXtalFrequencyMhz()); LOG_F("CPU freq is %u\n", getCpuFrequencyMhz()); setCpuFrequencyMhz(80); LOG_F("CPU freq is now %u\n", getCpuFrequencyMhz()); de::uvok::badge::ble_init(); de::uvok::badge::display_init(); #if BADGE_USE_WIFI WiFi.begin(BADGE_SSID_NAME, BADGE_SSID_PASS); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.printf("> My IP is %s\n", WiFi.localIP().toString()); #endif // doesn't work as expected? // gpio_wakeup_enable(GPIO_NUM_0, GPIO_INTR_LOW_LEVEL); // esp_sleep_enable_gpio_wakeup(); // esp_light_sleep_start(); de::uvok::badge::gpio_init(); } void loop() { static uint32_t lastActivity; uint16_t pressDuration = de::uvok::badge::gpio_poll(); if (pressDuration < 64) { uint8_t newNum = UINT8_MAX; if (pressDuration == NEXT_KEY) de::uvok::badge::display_next(); if (pressDuration == PRV_KEY) de::uvok::badge::display_prev(); if (pressDuration == OK_KEY) newNum = de::uvok::badge::display_refresh(); if (newNum != UINT8_MAX) { de::uvok::badge::ble_set_image(newNum); lastActivity = millis(); } } else if (pressDuration > PRESS_TIME_BLE_ADV) { de::uvok::badge::ble_advertise(); lastActivity = millis(); } { de::uvok::badge::ble_poll_result_t pollres = de::uvok::badge::ble_poll(); if (pollres.has_data) { de::uvok::badge::display_direct(pollres.new_template); lastActivity = millis(); } } if (millis() - lastActivity > SLEEP_TIME && !de::uvok::badge::ble_is_advertising()) { // RTC watchdog might reset ??? - not sure when/how this happens... // (Happened with CPU@240MHz, not at 80 MHz yet?) // RTCWDT_RTC_RST esp_sleep_enable_timer_wakeup(10 * 1000); esp_light_sleep_start(); } }