Library for Using BLE as Stream Object

Dependents:   bel-example-pentabarf

Files at this revision

API Documentation at this revision

Comitter:
twixx
Date:
Wed Jan 03 15:07:11 2018 +0000
Commit message:
added Ble Serial

Changed in this revision

BleSerial.cpp Show annotated file Show diff for this revision Revisions of this file
BleSerial.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BleSerial.cpp	Wed Jan 03 15:07:11 2018 +0000
@@ -0,0 +1,59 @@
+/* mbed Microcontroller Library
+ * Copyright (c) 2006-2013 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "BleSerial.h"
+#include "platform/mbed_wait_api.h"
+
+//#if DEVICE_SERIAL
+
+namespace mbed {
+
+BleSerial::BleSerial(BLE &_ble) : Stream() {
+    this->bleUart = new UARTService(_ble);
+}
+
+    //bool BleSerial::readable() const{
+    //    return (bool) numBytesReceived;
+    //}
+
+    ssize_t BleSerial::write(const void* buffer, size_t length){
+        return this->bleUart->write(buffer, length);
+    }
+    
+    int BleSerial::_putc(int c){
+        return this->bleUart->_putc(c);
+    }
+    
+    int BleSerial::_getc(){
+        return this->bleUart->_getc();   
+    }
+    
+        /**
+     * Note: TX and RX characteristics are to be interpreted from the viewpoint of the GATT client using this service.
+     */
+    uint16_t BleSerial::getTXCHandle() {
+        return this->bleUart->getTXCharacteristicHandle();
+    }
+
+    /**
+     * Note: TX and RX characteristics are to be interpreted from the viewpoint of the GATT client using this service.
+     */
+    uint16_t BleSerial::getRXCHandle() {
+        return this->bleUart->getRXCharacteristicHandle();
+    }
+
+} // namespace mbed
+
+//#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BleSerial.h	Wed Jan 03 15:07:11 2018 +0000
@@ -0,0 +1,57 @@
+/* mbed Microcontroller Library
+ * Copyright (c) 2006-2013 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef MBED_BLESERIAL_H
+#define MBED_BLESERIAL_H
+
+#include "platform/platform.h"
+
+//#if defined (DEVICE_SERIAL) || defined(DOXYGEN_ONLY)
+
+#include "Stream.h"
+#include "UARTService.h"
+#include "platform/NonCopyable.h"
+
+namespace mbed {
+
+class BleSerial : public Stream, private NonCopyable<BleSerial> {
+
+public:
+    //using UARTService::write;
+    //using Stream::read override;
+    virtual ssize_t write(const void* buffer, size_t length);
+
+    BleSerial(BLE &_ble);
+    
+    uint16_t getTXCHandle();
+    uint16_t getRXCHandle();
+
+    //bool readable();
+    //writeable: return (bool) BLE_UART_SERVICE_MAX_DATA_LEN - sendBufferIndex;
+
+protected:
+    //using UARTService::_getc;
+    //using UARTService::_putc;
+    virtual int _putc(int c);
+    virtual int _getc();
+private:
+    UARTService *bleUart;
+};
+
+} // namespace mbed
+
+#endif
+
+//#endif
\ No newline at end of file