new characteristicen
This commit is contained in:
1 parent
be742caa46
commit
1114564e2b
1 file changed
+68
-8
@@ -30,15 +30,22 @@ bool timeChanged = false;
|
|||||||
Arduino_DataBus *bus = new Arduino_HWSPI(TFT_DC, -1);
|
Arduino_DataBus *bus = new Arduino_HWSPI(TFT_DC, -1);
|
||||||
Arduino_GFX *gfx = new Arduino_ST7789(bus, TFT_RST, 0, true, 240, 240, 0, 0);
|
Arduino_GFX *gfx = new Arduino_ST7789(bus, TFT_RST, 0, true, 240, 240, 0, 0);
|
||||||
|
|
||||||
#define SERVICE_UUID "791cadd7-de87-49f9-8986-94b7ae11940b"
|
#define SERVICE_UUID "791cadd7-de87-49f9-8986-94b7ae11940b"
|
||||||
|
|
||||||
#define CHAR_MESSAGE_UUID "3e4eac5b-eaa2-4e0c-a705-dcac4f606e01"
|
#define CHAR_MESSAGE_UUID "3e4eac5b-eaa2-4e0c-a705-dcac4f606e01"
|
||||||
#define CHAR_TIME_UUID "3e4eac5b-eaa2-4e0c-a705-dcac4f606e02"
|
#define CHAR_TIME_UUID "3e4eac5b-eaa2-4e0c-a705-dcac4f606e02"
|
||||||
#define CHAR_DATE_UUID "3e4eac5b-eaa2-4e0c-a705-dcac4f606e03"
|
#define CHAR_DATE_UUID "3e4eac5b-eaa2-4e0c-a705-dcac4f606e03"
|
||||||
|
|
||||||
|
|
||||||
|
#define SERVICE_NOTIFICATION_UUID "791cadd7-de87-49f9-8986-94b7ae11941b"
|
||||||
|
|
||||||
|
#define CHAR_NOTIF_APP_UUID "9ff3d4a9-2082-424d-bf34-8dfaf752ff90"
|
||||||
|
#define CHAR_NOTIF_TITLE_UUID "9ff3d4a9-2082-424d-bf34-8dfaf752ff91"
|
||||||
|
#define CHAR_NOTIF_TEXT_UUID "9ff3d4a9-2082-424d-bf34-8dfaf752ff92"
|
||||||
|
|
||||||
#define deviceName "ESP32-Watch"
|
#define deviceName "ESP32-Watch"
|
||||||
|
|
||||||
class CharacteristicCallbacks: public BLECharacteristicCallbacks {
|
class CharacteristicCallbacksService: public BLECharacteristicCallbacks {
|
||||||
void onWrite(BLECharacteristic *pCharacteristic) override {
|
void onWrite(BLECharacteristic *pCharacteristic) override {
|
||||||
String value = pCharacteristic->getValue();
|
String value = pCharacteristic->getValue();
|
||||||
|
|
||||||
@@ -67,10 +74,36 @@ class CharacteristicCallbacks: public BLECharacteristicCallbacks {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CharacteristicCallbacksNotification: public BLECharacteristicCallbacks {
|
||||||
|
void onWrite(BLECharacteristic *pCharacteristic) override {
|
||||||
|
String value = pCharacteristic->getValue();
|
||||||
|
|
||||||
|
if (value.length() == 0) return;
|
||||||
|
|
||||||
|
//Notification characteristic check
|
||||||
|
if (pCharacteristic->getUUID().equals(BLEUUID(CHAR_NOTIF_APP_UUID))) {
|
||||||
|
Serial.print("Notification App: ");
|
||||||
|
Serial.println(value);
|
||||||
|
message = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pCharacteristic->getUUID().equals(BLEUUID(CHAR_NOTIF_TITLE_UUID))) {
|
||||||
|
Serial.print("Notification Title: ");
|
||||||
|
Serial.println(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pCharacteristic->getUUID().equals(BLEUUID(CHAR_NOTIF_TEXT_UUID))) {
|
||||||
|
Serial.print("Notification Text: ");
|
||||||
|
Serial.println(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class MyServerCallbacks: public BLEServerCallbacks {
|
class MyServerCallbacks: public BLEServerCallbacks {
|
||||||
void onConnect(BLEServer* pServer) {
|
void onConnect(BLEServer* pServer) {
|
||||||
Serial.println("Conecction with client");
|
Serial.println("Conecction with client");
|
||||||
connected = true;
|
connected = true;
|
||||||
|
BLEDevice::stopAdvertising();
|
||||||
};
|
};
|
||||||
|
|
||||||
void onDisconnect(BLEServer* pServer) {
|
void onDisconnect(BLEServer* pServer) {
|
||||||
@@ -94,6 +127,10 @@ void setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
mainScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void mainScreen(){
|
||||||
gfx->setTextSize(2);
|
gfx->setTextSize(2);
|
||||||
gfx->setCursor(20, 20);
|
gfx->setCursor(20, 20);
|
||||||
if (connected){
|
if (connected){
|
||||||
@@ -115,7 +152,6 @@ void loop() {
|
|||||||
timeChanged = false;
|
timeChanged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
updateClock();
|
updateClock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,6 +159,7 @@ void initDevice(){
|
|||||||
BLEDevice::init(deviceName);
|
BLEDevice::init(deviceName);
|
||||||
BLEServer *pServer = BLEDevice::createServer();
|
BLEServer *pServer = BLEDevice::createServer();
|
||||||
pServer->setCallbacks(new MyServerCallbacks());
|
pServer->setCallbacks(new MyServerCallbacks());
|
||||||
|
|
||||||
BLEService *pService = pServer->createService(SERVICE_UUID);
|
BLEService *pService = pServer->createService(SERVICE_UUID);
|
||||||
|
|
||||||
BLESecurity *pSecurity = new BLESecurity();
|
BLESecurity *pSecurity = new BLESecurity();
|
||||||
@@ -130,12 +167,34 @@ void initDevice(){
|
|||||||
pSecurity->setCapability(ESP_IO_CAP_NONE);
|
pSecurity->setCapability(ESP_IO_CAP_NONE);
|
||||||
pSecurity->setInitEncryptionKey(ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK);
|
pSecurity->setInitEncryptionKey(ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK);
|
||||||
|
|
||||||
//Message
|
//---------------ServiceNotificationChar---------------------------------
|
||||||
|
BLECharacteristic *pCharacteristicApp = pService->createCharacteristic(
|
||||||
|
CHAR_NOTIF_APP_UUID,
|
||||||
|
BLECharacteristic::PROPERTY_READ |
|
||||||
|
BLECharacteristic::PROPERTY_WRITE);
|
||||||
|
pCharacteristicApp->setCallbacks(new CharacteristicCallbacksService());
|
||||||
|
pCharacteristicApp->setValue("Hello World");
|
||||||
|
|
||||||
|
BLECharacteristic *pCharacteristicTitle = pService->createCharacteristic(
|
||||||
|
CHAR_NOTIF_TITLE_UUID,
|
||||||
|
BLECharacteristic::PROPERTY_READ |
|
||||||
|
BLECharacteristic::PROPERTY_WRITE);
|
||||||
|
pCharacteristicTitle->setCallbacks(new CharacteristicCallbacksService());
|
||||||
|
pCharacteristicTitle->setValue("Hello World");
|
||||||
|
|
||||||
|
BLECharacteristic *pCharacteristicText = pService->createCharacteristic(
|
||||||
|
CHAR_NOTIF_TEXT_UUID,
|
||||||
|
BLECharacteristic::PROPERTY_READ |
|
||||||
|
BLECharacteristic::PROPERTY_WRITE);
|
||||||
|
pCharacteristicText->setCallbacks(new CharacteristicCallbacksService());
|
||||||
|
pCharacteristicText->setValue("Hello World");
|
||||||
|
|
||||||
|
//---------------ServiceChar--------------------------
|
||||||
BLECharacteristic *pCharacteristicMessage = pService->createCharacteristic(
|
BLECharacteristic *pCharacteristicMessage = pService->createCharacteristic(
|
||||||
CHAR_MESSAGE_UUID,
|
CHAR_MESSAGE_UUID,
|
||||||
BLECharacteristic::PROPERTY_READ |
|
BLECharacteristic::PROPERTY_READ |
|
||||||
BLECharacteristic::PROPERTY_WRITE);
|
BLECharacteristic::PROPERTY_WRITE);
|
||||||
pCharacteristicMessage->setCallbacks(new CharacteristicCallbacks());
|
pCharacteristicMessage->setCallbacks(new CharacteristicCallbacksService());
|
||||||
pCharacteristicMessage->setValue("Hello World");
|
pCharacteristicMessage->setValue("Hello World");
|
||||||
|
|
||||||
//Time
|
//Time
|
||||||
@@ -143,18 +202,19 @@ void initDevice(){
|
|||||||
CHAR_TIME_UUID,
|
CHAR_TIME_UUID,
|
||||||
BLECharacteristic::PROPERTY_READ |
|
BLECharacteristic::PROPERTY_READ |
|
||||||
BLECharacteristic::PROPERTY_WRITE);
|
BLECharacteristic::PROPERTY_WRITE);
|
||||||
pCharacteristicTime->setCallbacks(new CharacteristicCallbacks());
|
pCharacteristicTime->setCallbacks(new CharacteristicCallbacksService());
|
||||||
pCharacteristicTime->setValue("TIME");
|
pCharacteristicTime->setValue("TIME");
|
||||||
|
|
||||||
BLECharacteristic *pCharacteristicDate = pService->createCharacteristic(
|
BLECharacteristic *pCharacteristicDate = pService->createCharacteristic(
|
||||||
CHAR_DATE_UUID,
|
CHAR_DATE_UUID,
|
||||||
BLECharacteristic::PROPERTY_READ |
|
BLECharacteristic::PROPERTY_READ |
|
||||||
BLECharacteristic::PROPERTY_WRITE);
|
BLECharacteristic::PROPERTY_WRITE);
|
||||||
pCharacteristicDate->setCallbacks(new CharacteristicCallbacks());
|
pCharacteristicDate->setCallbacks(new CharacteristicCallbacksService());
|
||||||
pCharacteristicDate->setValue("Date");
|
pCharacteristicDate->setValue("Date");
|
||||||
|
|
||||||
pService->start();
|
pService->start();
|
||||||
// BLEAdvertising *pAdvertising = pServer->getAdvertising(); // this still is working for backward compatibility
|
Serial.println(ESP.getFreeHeap());
|
||||||
|
|
||||||
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
|
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
|
||||||
pAdvertising->addServiceUUID(SERVICE_UUID);
|
pAdvertising->addServiceUUID(SERVICE_UUID);
|
||||||
pAdvertising->setScanResponse(true);
|
pAdvertising->setScanResponse(true);
|
||||||
|
|||||||
Reference in new issue
Block a user