#ifndef BLUETOOTH_LE_UART_SERVER #define BLUETOOTH_LE_UART_SERVER #include #include #include #include #include class BluetoothLeUartServerCallbacks; class BluetoothLeUartServer : protected BLEServerCallbacks, protected BLECharacteristicCallbacks { public: explicit BluetoothLeUartServer(String deviceName, const char uartServiceUUID[36], const char rxUUID[36], const char txUUID[36]); // befriend for callbacks friend class BLEServer; friend class BLECharacteristic; // public functions void setCallbacks(BluetoothLeUartServerCallbacks *callbacks); void sendData(String data); bool getDeviceConnected(); protected: // callbacks for BLEServer void onConnect(BLEServer *pServer) override; void onDisconnect(BLEServer *pServer) override; // callback for BLECharacteristic void onWrite(BLECharacteristic *rxCharacteristic) override; private: const char *uartServiceUUID; const char *rxUUID; const char *txUUID; BLEServer *bleServer; BLEService *bleService; BLECharacteristic *txCharacteristic; BLECharacteristic *rxCharacteristic; bool deviceConnected = false; BluetoothLeUartServerCallbacks *callbacks; }; class BluetoothLeUartServerCallbacks { public: virtual ~BluetoothLeUartServerCallbacks(){}; const char* test = "testlol"; virtual void onDeviceConnectedChanged(bool deviceConnected); virtual void onDataReceived(String data); }; #endif // BLUETOOTH_LE_UART_SERVER