BLE: Code does not compile

DrCdiff
Posts: 1
Joined: Sat Dec 26, 2020 6:10 am

BLE: Code does not compile

Postby DrCdiff » Sat Dec 26, 2020 6:46 am

I am trying to get startet with the esp32 an BLE. I stolethe code from here:
https://www.instructables.com/ESP32-Blu ... ow-Energy/

As I do not have the temperature sensor (hopefully) replaced the code for the temperature sensor with the code for the internal sensor.
Here is my code:

Code: Select all

#include <BLEDevice.h>

#include <BLEServer.h>

#include <BLEUtils.h>

#include <BLE2902.h>


//objeto responsável pela comunicação com o sensor de temperatura infravermelho
//IRTherm sensor;
 
BLECharacteristic *characteristicTX; //através desse objeto iremos enviar dados para o client
 
bool deviceConnected = false; //controle de dispositivo conectado
 
const int LED = 4; //LED interno do ESP32 (esse pino pode variar de placa para placa)
const int BUZZER = 2; //pino d BUZZER
 
#define SERVICE_UUID            "ab0828b1-198e-4351-b779-901fa0e0371e"
#define CHARACTERISTIC_UUID_RX  "4ac8a682-9736-4e5d-932b-e9b31405049c"
#define CHARACTERISTIC_UUID_TX  "0972EF8C-7613-4075-AD52-756F33D4DA91"

uint8_t temprature_sens_read();

void setup() {
    Serial.begin(115200);
 
    pinMode(LED, OUTPUT);
    pinMode(BUZZER, OUTPUT);
 
    // Create the BLE Device
    BLEDevice::init("ESP32-BLE"); // nome do dispositivo bluetooth
 
    // Create the BLE Server
    BLEServer *server = BLEDevice::createServer(); //cria um BLE server 
 
    server->setCallbacks(new ServerCallbacks()); //seta o callback do server
 
    // Create the BLE Service
    BLEService *service = server->createService(SERVICE_UUID);
 
    // Create a BLE Characteristic para envio de dados
    characteristicTX = service->createCharacteristic(
                       CHARACTERISTIC_UUID_TX,
                       BLECharacteristic::PROPERTY_NOTIFY
                     );
 
    characteristicTX->addDescriptor(new BLE2902());
    // Create a BLE Characteristic para recebimento de dados
    BLECharacteristic *characteristic = service->createCharacteristic(
                                                      CHARACTERISTIC_UUID_RX,
                                                      BLECharacteristic::PROPERTY_WRITE
                                                    );
 
    characteristic->setCallbacks(new CharacteristicCallbacks());
 
    // Start the service
    service->start();
 
    // Start advertising (descoberta do ESP32)
    server->getAdvertising()->start();
 
    //Inicializa sensor de temperatura infravermelho 
    //sensor.begin(); 
 
    //Seleciona temperatura em Celsius 
    //sensor.setUnit(TEMP_C);//podemos ainda utilizar TEMP_F para Fahrenheit ou TEMP_K para Kelvin 
    //Serial.println(“Aguardando algum dispositivo conectar...");
 
} //fim setup


void loop() {
    //se existe algum dispositivo conectado
    if (deviceConnected) {
        //chamamos o método "read" do sensor para realizar a leitura da temperatura
        //read retornará 1 caso consiga realizar a leitura, ou 0 caso contrário 
        if (1)
        {
            //recupera a leitura da temperatura do ambiente
            float tempAmbiente = (temprature_sens_read() - 32) / 1.8;
            //recupera a leitura da temperatura do objeto apontado pelo sensor
            //float tempObjeto = sensor.object();
 
            // abaixo vamos converser o valor para um array de char
            char txString[8]; 
            dtostrf(tempAmbiente, 2, 2, txString); // float_val, min_width, digits_after_decimal, char_buffer
 
            characteristicTX->setValue(txString); //seta o valor que a caracteristica notificará (enviar) 
            characteristicTX->notify(); // Envia o valor para o smartphone
        }
    }
    delay(1000);
}

//callback para eventos das características
class CharacteristicCallbacks: public BLECharacteristicCallbacks {
     void onWrite(BLECharacteristic *characteristic) {
          //retorna ponteiro para o registrador contendo o valor atual da caracteristica
          std::string rxValue = characteristic->getValue(); 
          //verifica se existe dados (tamanho maior que zero)
          if (rxValue.length() > 0) {
 
               for (int i = 0; i < rxValue.length(); i++) {
             Serial.print(rxValue[i]);
               }
               Serial.println();
               //L1 liga o LED | L0 desliga o LED
               if (rxValue.find("L1") != -1) { 
             digitalWrite(LED, HIGH);
               }
               else if (rxValue.find("L0") != -1) {
             digitalWrite(LED, LOW);
               }
               // B1 liga o Buzzer | B0 desliga o Buzzer
               else if (rxValue.find("B1") != -1) { 
             digitalWrite(BUZZER, HIGH);
               }
               else if (rxValue.find("B0") != -1) {
             digitalWrite(BUZZER, LOW);
               }
          }
     }//onWrite
};

//callback para receber os eventos de conexão de dispositivos
class ServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      deviceConnected = true;
    };
 
    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
};
Unfortunatelly I get compiling errors (related to the BLE part):
C:\Users\XXXX\Desktop\sketch_dec26a\sketch_dec26a.ino: In function 'void setup()':
sketch_dec26a:38:30: error: expected type-specifier before 'ServerCallbacks'
server->setCallbacks(new ServerCallbacks()); //seta o callback do server
^
sketch_dec26a:56:38: error: expected type-specifier before 'CharacteristicCallbacks'
characteristic->setCallbacks(new CharacteristicCallbacks());
^
exit status 1
expected type-specifier before 'ServerCallbacks'

Any ideas howe to fix this?

Who is online

Users browsing this forum: No registered users and 45 guests