summaryrefslogtreecommitdiff
path: root/examples/BLE_uart/BLE_uart.ino
diff options
context:
space:
mode:
authorNeil Kolban <kolban1@kolban.com>2018-04-03 19:34:25 -0500
committerNeil Kolban <kolban1@kolban.com>2018-04-03 19:34:25 -0500
commitb5d960bacc2c92770a42b4b4565f0e82c797bbc5 (patch)
tree4dfa590a744a7f282698cae709173391ebbe9011 /examples/BLE_uart/BLE_uart.ino
parentSync for 0.4.9 (diff)
downloadthermostat-b5d960bacc2c92770a42b4b4565f0e82c797bbc5.tar.gz
thermostat-b5d960bacc2c92770a42b4b4565f0e82c797bbc5.tar.bz2
thermostat-b5d960bacc2c92770a42b4b4565f0e82c797bbc5.zip
Commit for 0.4.10
Diffstat (limited to 'examples/BLE_uart/BLE_uart.ino')
-rw-r--r--examples/BLE_uart/BLE_uart.ino52
1 files changed, 33 insertions, 19 deletions
diff --git a/examples/BLE_uart/BLE_uart.ino b/examples/BLE_uart/BLE_uart.ino
index a348a66..35b570b 100644
--- a/examples/BLE_uart/BLE_uart.ino
+++ b/examples/BLE_uart/BLE_uart.ino
@@ -24,8 +24,10 @@
#include <BLEUtils.h>
#include <BLE2902.h>
-BLECharacteristic *pCharacteristic;
+BLEServer *pServer = NULL;
+BLECharacteristic * pTxCharacteristic;
bool deviceConnected = false;
+bool oldDeviceConnected = false;
uint8_t txValue = 0;
// See the following for generating UUIDs:
@@ -70,26 +72,26 @@ void setup() {
BLEDevice::init("UART Service");
// Create the BLE Server
- BLEServer *pServer = BLEDevice::createServer();
+ pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
// Create the BLE Service
BLEService *pService = pServer->createService(SERVICE_UUID);
// Create a BLE Characteristic
- pCharacteristic = pService->createCharacteristic(
- CHARACTERISTIC_UUID_TX,
- BLECharacteristic::PROPERTY_NOTIFY
- );
+ pTxCharacteristic = pService->createCharacteristic(
+ CHARACTERISTIC_UUID_TX,
+ BLECharacteristic::PROPERTY_NOTIFY
+ );
- pCharacteristic->addDescriptor(new BLE2902());
+ pTxCharacteristic->addDescriptor(new BLE2902());
- BLECharacteristic *pCharacteristic = pService->createCharacteristic(
- CHARACTERISTIC_UUID_RX,
- BLECharacteristic::PROPERTY_WRITE
- );
+ BLECharacteristic * pRxCharacteristic = pService->createCharacteristic(
+ CHARACTERISTIC_UUID_RX,
+ BLECharacteristic::PROPERTY_WRITE
+ );
- pCharacteristic->setCallbacks(new MyCallbacks());
+ pRxCharacteristic->setCallbacks(new MyCallbacks());
// Start the service
pService->start();
@@ -101,11 +103,23 @@ void setup() {
void loop() {
- if (deviceConnected) {
- Serial.printf("*** Sent Value: %d ***\n", txValue);
- pCharacteristic->setValue(&txValue, 1);
- pCharacteristic->notify();
- txValue++;
- }
- delay(1000);
+ if (deviceConnected) {
+ pTxCharacteristic->setValue(&txValue, 1);
+ pTxCharacteristic->notify();
+ txValue++;
+ delay(10); // bluetooth stack will go into congestion, if too many packets are sent
+ }
+
+ // disconnecting
+ if (!deviceConnected && oldDeviceConnected) {
+ delay(500); // give the bluetooth stack the chance to get things ready
+ pServer->startAdvertising(); // restart advertising
+ Serial.println("start advertising");
+ oldDeviceConnected = deviceConnected;
+ }
+ // connecting
+ if (deviceConnected && !oldDeviceConnected) {
+ // do stuff here on connecting
+ oldDeviceConnected = deviceConnected;
+ }
}