diff options
author | uvok | 2025-07-20 08:00:35 +0200 |
---|---|---|
committer | uvok | 2025-07-20 08:00:35 +0200 |
commit | ad7f1107328fdd69aa7b808c904df2b052807bbf (patch) | |
tree | f13ef2afefeff2afe5452a80e278bee9178ef25a /src | |
parent | 12f19e6ac90513038d71a1e9018e8b40f8abfc68 (diff) |
Separate BLE stuff
Diffstat (limited to 'src')
-rw-r--r-- | src/ble.cpp | 38 | ||||
-rw-r--r-- | src/main.cpp | 35 |
2 files changed, 48 insertions, 25 deletions
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 <NimBLEDevice.h> + +#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 <Arduino.h> -#include <NimBLEDevice.h> - #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) { |