From b7b4793c57a162f303bac3488789f08cd46da2cb Mon Sep 17 00:00:00 2001 From: Biagio Montaruli Date: Wed, 7 Sep 2016 12:48:55 +0200 Subject: [PATCH 1/3] Fix for USB virtual serial port in sketches of CurieBLE library Since Arduino/Genuino 101 uses USB native port, wait for the Serial port to open before executing the sketch to not lose serial data already sent to the Serial monitor Signed-off-by: Biagio Montaruli --- libraries/CurieBLE/examples/BatteryMonitor/BatteryMonitor.ino | 3 ++- libraries/CurieBLE/examples/ButtonLED/ButtonLED.ino | 3 ++- libraries/CurieBLE/examples/CallbackLED/CallbackLED.ino | 3 ++- libraries/CurieBLE/examples/LED/LED.ino | 4 ++-- libraries/CurieBLE/examples/MIDIBLE/MIDIBLE.ino | 4 ++-- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/libraries/CurieBLE/examples/BatteryMonitor/BatteryMonitor.ino b/libraries/CurieBLE/examples/BatteryMonitor/BatteryMonitor.ino index 688b147f..49ef6047 100644 --- a/libraries/CurieBLE/examples/BatteryMonitor/BatteryMonitor.ino +++ b/libraries/CurieBLE/examples/BatteryMonitor/BatteryMonitor.ino @@ -23,7 +23,8 @@ int oldBatteryLevel = 0; // last battery level reading from analog input long previousMillis = 0; // last time the battery level was checked, in ms void setup() { - Serial.begin(9600); // initialize serial communication + Serial.begin(9600); // initialize Serial communication + while(!Serial) ; // wait for serial port to connect pinMode(13, OUTPUT); // initialize the LED on pin 13 to indicate when a central is connected /* Set a local name for the BLE device diff --git a/libraries/CurieBLE/examples/ButtonLED/ButtonLED.ino b/libraries/CurieBLE/examples/ButtonLED/ButtonLED.ino index b4cd873a..fbc848e6 100644 --- a/libraries/CurieBLE/examples/ButtonLED/ButtonLED.ino +++ b/libraries/CurieBLE/examples/ButtonLED/ButtonLED.ino @@ -18,7 +18,8 @@ BLECharCharacteristic ledCharacteristic("19B10011-E8F2-537E-4F6C-D104768A1214", BLECharCharacteristic buttonCharacteristic("19B10012-E8F2-537E-4F6C-D104768A1214", BLERead | BLENotify); // allows remote device to get notifications void setup() { - Serial.begin(9600); + Serial.begin(9600); // initialize Serial communication + while(!Serial) ; // wait for serial port to connect pinMode(ledPin, OUTPUT); // use the LED on pin 13 as an output pinMode(buttonPin, INPUT); // use button pin 4 as an input diff --git a/libraries/CurieBLE/examples/CallbackLED/CallbackLED.ino b/libraries/CurieBLE/examples/CallbackLED/CallbackLED.ino index f8788731..11ee1b52 100644 --- a/libraries/CurieBLE/examples/CallbackLED/CallbackLED.ino +++ b/libraries/CurieBLE/examples/CallbackLED/CallbackLED.ino @@ -14,7 +14,8 @@ BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // create service BLECharCharacteristic switchChar("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite); void setup() { - Serial.begin(9600); + Serial.begin(9600); // initialize Serial communication + while(!Serial) ; // wait for serial port to connect. pinMode(ledPin, OUTPUT); // use the LED on pin 13 as an output // set the local name peripheral advertises diff --git a/libraries/CurieBLE/examples/LED/LED.ino b/libraries/CurieBLE/examples/LED/LED.ino index a55501dc..8f25b5f8 100644 --- a/libraries/CurieBLE/examples/LED/LED.ino +++ b/libraries/CurieBLE/examples/LED/LED.ino @@ -14,8 +14,8 @@ BLEUnsignedCharCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104 const int ledPin = 13; // pin to use for the LED void setup() { - Serial.begin(9600); - + Serial.begin(9600); // initialize Serial communication + while(!Serial) ; // wait for serial port to connect // set LED pin to output mode pinMode(ledPin, OUTPUT); diff --git a/libraries/CurieBLE/examples/MIDIBLE/MIDIBLE.ino b/libraries/CurieBLE/examples/MIDIBLE/MIDIBLE.ino index 2dbe9833..d7aa0a23 100644 --- a/libraries/CurieBLE/examples/MIDIBLE/MIDIBLE.ino +++ b/libraries/CurieBLE/examples/MIDIBLE/MIDIBLE.ino @@ -92,8 +92,8 @@ BLEService midiSvc("03B80E5A-EDE8-4B33-A751-6CE34EC4C700"); // create service BLECharacteristic midiChar("7772E5DB-3868-4112-A1A9-F2669D106BF3", BLEWrite | BLEWriteWithoutResponse | BLENotify | BLERead, 5); void setup() { - Serial.begin(9600); - + Serial.begin(9600); // initialize Serial communication + while(!Serial) ; // wait for serial port to connect. BLESetup(); Serial.println(("Bluetooth device active, waiting for connections...")); } From e21fd0ede75134b4c30813c1c877e25b26ed2759 Mon Sep 17 00:00:00 2001 From: Biagio Montaruli Date: Wed, 7 Sep 2016 12:51:38 +0200 Subject: [PATCH 2/3] Update keyword.txt for CurieBLE library - Add CurieBLE Datatype - Add new methods : "end" and "setDeviceName" - Remove inexistent methods : "str", "data" and "length" - Add two new constants from BLEcommon.h file header : "BLE_MAX_ATTR_DATA_LEN" and "BLE_DEVICE_NAME_DEFAULT_PREFIX" Signed-off-by: Biagio Montaruli --- libraries/CurieBLE/keywords.txt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libraries/CurieBLE/keywords.txt b/libraries/CurieBLE/keywords.txt index 85eccea2..16436e47 100644 --- a/libraries/CurieBLE/keywords.txt +++ b/libraries/CurieBLE/keywords.txt @@ -6,6 +6,7 @@ # Datatypes (KEYWORD1) ####################################### +CurieBLE KEYWORD1 BLEAttribute KEYWORD1 BLECentral KEYWORD1 BLECharacteristic KEYWORD1 @@ -15,6 +16,7 @@ BLEService KEYWORD1 BLETypedCharacteristic KEYWORD1 BLEUuid KEYWORD1 +BLETypedCharacteristics KEYWORD1 BLECharCharacteristic KEYWORD1 BLEUnsignedCharCharacteristic KEYWORD1 BLEShortCharacteristic KEYWORD1 @@ -49,11 +51,13 @@ written KEYWORD2 subscribed KEYWORD2 begin KEYWORD2 +end KEYWORD2 getAdvertisingLength KEYWORD2 getAdvertising KEYWORD2 setAdvertisedServiceUuid KEYWORD2 setAdvertisedServiceData KEYWORD2 setLocalName KEYWORD2 +setDeviceName KEYWORD2 setAppearance KEYWORD2 setConnectionInterval KEYWORD2 addAttribute KEYWORD2 @@ -64,11 +68,6 @@ valueLE KEYWORD2 setValueBE KEYWORD2 valueBE KEYWORD2 -str KEYWORD2 -data KEYWORD2 -length KEYWORD2 - - ####################################### # Constants (LITERAL1) ####################################### @@ -90,3 +89,6 @@ BLEDisconnected LITERAL1 BLEWritten LITERAL1 BLESubscribed LITERAL1 BLEUnsubscribed LITERAL1 + +BLE_MAX_ATTR_DATA_LEN LITERAL1 +BLE_DEVICE_NAME_DEFAULT_PREFIX LITERAL1 From e2feb9cb8a93f0a41909dd753ab48b00b4bafbd2 Mon Sep 17 00:00:00 2001 From: Biagio Montaruli Date: Wed, 7 Sep 2016 12:54:26 +0200 Subject: [PATCH 3/3] Improve BLEAttribute.cpp and BLEAttribute.h Improve BLEAttributeType enumeration, methods and data members of BLEAttribute Class that use BLEAttributeType enum Signed-off-by: Biagio Montaruli --- libraries/CurieBLE/src/BLEAttribute.cpp | 4 ++-- libraries/CurieBLE/src/BLEAttribute.h | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/CurieBLE/src/BLEAttribute.cpp b/libraries/CurieBLE/src/BLEAttribute.cpp index d6f46591..199cfaf5 100644 --- a/libraries/CurieBLE/src/BLEAttribute.cpp +++ b/libraries/CurieBLE/src/BLEAttribute.cpp @@ -23,7 +23,7 @@ unsigned char BLEAttribute::_numAttributes = 0; -BLEAttribute::BLEAttribute(const char* uuid, enum BLEAttributeType type) : +BLEAttribute::BLEAttribute(const char* uuid, BLEAttributeType type) : _uuid(uuid), _type(type), _handle(0) @@ -36,7 +36,7 @@ BLEAttribute::uuid() const { return _uuid; } -enum BLEAttributeType +BLEAttributeType BLEAttribute::type() const { return this->_type; } diff --git a/libraries/CurieBLE/src/BLEAttribute.h b/libraries/CurieBLE/src/BLEAttribute.h index 8aaca067..b9ec927e 100644 --- a/libraries/CurieBLE/src/BLEAttribute.h +++ b/libraries/CurieBLE/src/BLEAttribute.h @@ -22,11 +22,11 @@ #include "BLECommon.h" -enum BLEAttributeType { +typedef enum { BLETypeService = 0x2800, BLETypeCharacteristic = 0x2803, BLETypeDescriptor = 0x2900 -}; +} BLEAttributeType; class BLEPeripheral; @@ -43,7 +43,7 @@ class BLEAttribute { protected: friend BLEPeripheral; - BLEAttribute(const char* uuid, enum BLEAttributeType type); + BLEAttribute(const char* uuid, BLEAttributeType type); BLEAttributeType type(void) const; bt_uuid btUuid(void) const; @@ -56,7 +56,7 @@ class BLEAttribute { static unsigned char _numAttributes; const char* _uuid; - enum BLEAttributeType _type; + BLEAttributeType _type; uint16_t _handle; };