#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()); 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() { 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); } else if (pressDuration > PRESS_TIME_BLE_ADV) { de::uvok::badge::ble_advertise(); } else if (pressDuration > PRESS_TIME_DRAW) { Serial.println("Drawing..."); de::uvok::badge::display_demo(); } { 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); } } // if (millis() - releasedTime > SLEEP_TIME && !pAdvertising->isAdvertising()) // { // Serial.println("Go to sleep..."); // esp_light_sleep_start(); // } }