aboutsummaryrefslogtreecommitdiff
path: root/Mussel/examples/voting_from_EddystoneTLM/voting_from_EddystoneTLM.ino
blob: 25c4720def26d91558262bfbf4f5eebce49b6b53 (plain)
  1. /*
  2.    Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp
  3. Ported to Arduino ESP32 by Evandro Copercini
  4. Changed to a beacon scanner to report iBeacon, EddystoneURL and EddystoneTLM beacons by beegee-tokyo
  5. Upgraded Eddystone part by Tomas Pilny on Feb 20, 2023
  6. */
  7. #include <Mussel.h>
  8. #include <Arduino.h>
  9. #include <BLEDevice.h>
  10. #include <BLEScan.h>
  11. #include <BLEAdvertisedDevice.h>
  12. #include <BLEEddystoneTLM.h>
  13. #include <BLEBeacon.h>
  14. Mussel mussel(10);
  15. int scanTime = 1; //In seconds
  16. BLEScan *pBLEScan;
  17. class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks {
  18. void onResult(BLEAdvertisedDevice advertisedDevice) {
  19. if (advertisedDevice.haveName()
  20. && advertisedDevice.getFrameType() == BLE_EDDYSTONE_TLM_FRAME
  21. ) {
  22. BLEEddystoneTLM EddystoneTLM(&advertisedDevice);
  23. mussel.push(
  24. advertisedDevice.getName(),
  25. millis(),
  26. EddystoneTLM.getTemp()
  27. );
  28. }
  29. }
  30. };
  31. void setup() {
  32. Serial.begin(115200);
  33. mussel.begin();
  34. BLEDevice::init("");
  35. pBLEScan = BLEDevice::getScan(); //create new scan
  36. pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  37. pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
  38. pBLEScan->setInterval(100);
  39. pBLEScan->setWindow(99); // less or equal setInterval value
  40. }
  41. void loop() {
  42. // put your main code here, to run repeatedly:
  43. BLEScanResults *foundDevices = pBLEScan->start(scanTime, false);
  44. pBLEScan->clearResults(); // delete results fromBLEScan buffer to release memory
  45. mussel.printStack();
  46. delay(500);
  47. }