diff --git a/keywords.txt b/keywords.txt index 4519babc..08426b44 100644 --- a/keywords.txt +++ b/keywords.txt @@ -28,6 +28,7 @@ BLELongCharacteristic KEYWORD1 BLEUnsignedLongCharacteristic KEYWORD1 BLEFloatCharacteristic KEYWORD1 BLEDoubleCharacteristic KEYWORD1 +BLEStringCharacteristic KEYWORD1 ####################################### # Methods and Functions (KEYWORD2) diff --git a/src/ArduinoBLE.h b/src/ArduinoBLE.h index f6b8dfb4..dc6e8188 100644 --- a/src/ArduinoBLE.h +++ b/src/ArduinoBLE.h @@ -22,6 +22,7 @@ #include "local/BLELocalDevice.h" #include "BLEProperty.h" +#include "BLEStringCharacteristic.h" #include "BLETypedCharacteristics.h" #endif diff --git a/src/BLEStringCharacteristic.cpp b/src/BLEStringCharacteristic.cpp new file mode 100644 index 00000000..76f0812c --- /dev/null +++ b/src/BLEStringCharacteristic.cpp @@ -0,0 +1,45 @@ +/* + This file is part of the ArduinoBLE library. + Copyright (c) 2018 Arduino SA. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "BLEStringCharacteristic.h" + +BLEStringCharacteristic::BLEStringCharacteristic(const char* uuid, unsigned char properties, int valueSize) : + BLECharacteristic(uuid, properties, valueSize) +{ +} + +int BLEStringCharacteristic::writeValue(const String& value) +{ + return BLECharacteristic::writeValue(value.c_str()); +} + +String BLEStringCharacteristic::value(void) +{ + String str; + int length = BLECharacteristic::valueLength(); + const uint8_t* val = BLECharacteristic::value(); + + str.reserve(length); + + for (int i = 0; i < length; i++) { + str += (char)val[i]; + } + + return str; +} diff --git a/src/BLEStringCharacteristic.h b/src/BLEStringCharacteristic.h new file mode 100644 index 00000000..c9f28fca --- /dev/null +++ b/src/BLEStringCharacteristic.h @@ -0,0 +1,39 @@ +/* + This file is part of the ArduinoBLE library. + Copyright (c) 2018 Arduino SA. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _BLE_STRING_CHARACTERISTIC_H_ +#define _BLE_STRING_CHARACTERISTIC_H_ + +#include + +#include "BLECharacteristic.h" + +class BLEStringCharacteristic : public BLECharacteristic +{ +public: + BLEStringCharacteristic(const char* uuid, unsigned char properties, int valueSize); + + int writeValue(const String& value); + int setValue(const String& value) { return writeValue(value); } + String value(void); + +private: +}; + +#endif