From ad7f1107328fdd69aa7b808c904df2b052807bbf Mon Sep 17 00:00:00 2001 From: uvok Date: Sun, 20 Jul 2025 08:00:35 +0200 Subject: Separate BLE stuff --- include/badge/ble.h | 7 +++++++ src/ble.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/main.cpp | 35 ++++++++++------------------------- 3 files changed, 55 insertions(+), 25 deletions(-) create mode 100644 include/badge/ble.h create mode 100644 src/ble.cpp diff --git a/include/badge/ble.h b/include/badge/ble.h new file mode 100644 index 0000000..efdf621 --- /dev/null +++ b/include/badge/ble.h @@ -0,0 +1,7 @@ +#pragma once + +namespace de::uvok::badge +{ + void ble_init(void); + void ble_advertise(void); +} diff --git a/src/ble.cpp b/src/ble.cpp new file mode 100644 index 0000000..4f98679 --- /dev/null +++ b/src/ble.cpp @@ -0,0 +1,38 @@ +#include "badge/ble.h" + +#include + +#include "badge/config.h" + +static NimBLEServer *server; +static NimBLEAdvertising *pAdvertising; + +void de::uvok::badge::ble_init(void) +{ + + NimBLEDevice::init("Espadge"); + server = NimBLEDevice::createServer(); + NimBLEService *service = new NimBLEService("ca260000-b4bb-46b2-bd06-b7b7a61ea990"); + // read/write current + auto c = service->createCharacteristic("ca260001-b4bb-46b2-bd06-b7b7a61ea990", + NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE || NIMBLE_PROPERTY::NOTIFY); + + // get pictures + service->createCharacteristic("ca260002-b4bb-46b2-bd06-b7b7a61ea990", NIMBLE_PROPERTY::READ); + + service->start(); + + server->addService(service); + + pAdvertising = NimBLEDevice::getAdvertising(); + pAdvertising->setName("NimBLE"); +} + +void de::uvok::badge::ble_advertise(void) +{ + if (!pAdvertising->isAdvertising()) + { + Serial.println("Long press detected. Starting advertising..."); + pAdvertising->start(10000); + } +} diff --git a/src/main.cpp b/src/main.cpp index 75c4d8b..b5afe53 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,8 +1,8 @@ #include -#include - #include "badge/config.h" + +#include "badge/ble.h" #include "badge/display.h" #include "badge/gpio.h" @@ -13,29 +13,15 @@ #define BADGE_USE_WIFI 0 #endif -NimBLEServer *server; - #define PRESS_TIME_DRAW 1000 #define PRESS_TIME_BLE_ADV 3000 #define SLEEP_TIME 10000 -NimBLEAdvertising *pAdvertising; void setup() { Serial.begin(115200); Serial.println("Yes, it works!"); - - NimBLEDevice::init("Espadge"); - server = NimBLEDevice::createServer(); - NimBLEService *service = new NimBLEService("ca260000-b4bb-46b2-bd06-b7b7a61ea990"); - auto c = service->createCharacteristic("ca260001-b4bb-46b2-bd06-b7b7a61ea990"); - service->start(); - c->setValue("1"); - - server->addService(service); - - pAdvertising = NimBLEDevice::getAdvertising(); - pAdvertising->setName("NimBLE"); + de::uvok::badge::ble_init(); de::uvok::badge::display_init(); #if BADGE_USE_WIFI @@ -58,17 +44,16 @@ void loop() uint16_t pressDuration = de::uvok::badge::gpio_poll(); if (pressDuration < 64) { - if (pressDuration == NEXT_KEY) de::uvok::badge::display_next(); - if (pressDuration == PRV_KEY) de::uvok::badge::display_prev(); - if (pressDuration == OK_KEY) de::uvok::badge::display_refresh(); + if (pressDuration == NEXT_KEY) + de::uvok::badge::display_next(); + if (pressDuration == PRV_KEY) + de::uvok::badge::display_prev(); + if (pressDuration == OK_KEY) + de::uvok::badge::display_refresh(); } else if (pressDuration > PRESS_TIME_BLE_ADV) { - if (!pAdvertising->isAdvertising()) - { - Serial.println("Long press detected. Starting advertising..."); - pAdvertising->start(10000); - } + de::uvok::badge::ble_advertise(); } else if (pressDuration > PRESS_TIME_DRAW) { -- cgit v1.2.3