| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | #include "WS_Bluetooth.h"BLEServer* pServer;                                                             // Used to represent a BLE serverBLECharacteristic* pTxCharacteristic;BLECharacteristic* pRxCharacteristic;/**********************************************************  Bluetooth   *********************************************************/class MyServerCallbacks : public BLEServerCallbacks {                           //By overriding the onConnect() and onDisconnect() functions    void onConnect(BLEServer* pServer) {                                        // When the Device is connected, "Device connected" is printed.    RGB_Light(0, 0, 60);   }  void onDisconnect(BLEServer* pServer) {                                       // "Device disconnected" will be printed when the device is disconnected    RGB_Light(0, 0, 0);    BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();                 // Re-broadcast so that the device can query    pAdvertising->addServiceUUID(SERVICE_UUID);                                 // Re-broadcast so that the device can query    pAdvertising->setScanResponse(true);                                        // Re-broadcast so that the device can query    pAdvertising->setMinPreferred(0x06);                                        // Re-broadcast so that the device can query     pAdvertising->setMinPreferred(0x12);                                        // Re-broadcast so that the device can query     BLEDevice::startAdvertising();                                              // Re-broadcast so that the device can query     pRxCharacteristic->notify();                                                // Re-broadcast so that the device can query      pAdvertising->start();                                                      // Re-broadcast so that the device can query  }};class MyRXCallback : public BLECharacteristicCallbacks {  void onWrite(BLECharacteristic* pCharacteristic)   {              SetRelays(pCharacteristic->getValue());                     pRxCharacteristic->setValue("");      }};class MyTXCallback : public BLECharacteristicCallbacks {  void onRead(BLECharacteristic* pCharacteristic, esp_ble_gatts_cb_param_t* param)   {                               pTxCharacteristic->setValue(GetRelays());    }};// void SetStatus(char* Data) {                                           // Send data using Bluetooth//   if (Data != nullptr && strlen(Data) > 0) {//     if (pServer->getConnectedCount() > 0) {  //       std::string SendValue = Data;                       //       pTxCharacteristic->setValue(SendValue);                                   // Set SendValue to the eigenvalue//       pTxCharacteristic->notify();                                              // Sends a notification to all connected devices//     }//   }// }void Bluetooth_Init(){  /*************************************************************************  Bluetooth  *************************************************************************/  BLEDevice::init("ESP32 S3 Relay 6CH");                                        // Initialize Bluetooth and start broadcasting                             pServer = BLEDevice::createServer();                                            pServer->setCallbacks(new MyServerCallbacks());                                 BLEService* pService = pServer->createService(SERVICE_UUID);                      pTxCharacteristic = pService->createCharacteristic(                                    TX_CHARACTERISTIC_UUID,                                    BLECharacteristic:: PROPERTY_READ);         // The eigenvalues are readable and can be read by remote devices  pTxCharacteristic->setCallbacks(new MyTXCallback());  pRxCharacteristic = pService->createCharacteristic(                                    RX_CHARACTERISTIC_UUID,                                    BLECharacteristic::PROPERTY_WRITE);         // The eigenvalues are writable and can be written to by remote devices    pRxCharacteristic->setCallbacks(new MyRXCallback());  //pRxCharacteristic->setValue("Connected!");        pService->start();     BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();                     pAdvertising->addServiceUUID(SERVICE_UUID);                                     pAdvertising->setScanResponse(true);                                            pAdvertising->setMinPreferred(0x06);                                            pAdvertising->setMinPreferred(0x12);                                            BLEDevice::startAdvertising();                                                  pRxCharacteristic->notify();                                                      pAdvertising->start(); }
 |