No Changes

Dependencies:   BLE_API mbed-dev-bin nRF51822

Dependents:   microbit

Fork of microbit-dal by Lancaster University

Revision:
66:2fc7d7c2fffc
Parent:
65:f7ebabf23e15
Child:
67:99cfde195ff3
diff -r f7ebabf23e15 -r 2fc7d7c2fffc source/drivers/MicroBitSerial.cpp
--- a/source/drivers/MicroBitSerial.cpp	Wed Jul 13 12:18:45 2016 +0100
+++ b/source/drivers/MicroBitSerial.cpp	Wed Jul 13 12:18:46 2016 +0100
@@ -57,8 +57,9 @@
   */
 MicroBitSerial::MicroBitSerial(PinName tx, PinName rx, uint8_t rxBufferSize, uint8_t txBufferSize) : RawSerial(tx,rx), delimeters()
 {
-    this->rxBuffSize = rxBufferSize;
-    this->txBuffSize = txBufferSize;
+    // + 1 so there is a usable buffer size, of the size the user requested.
+    this->rxBuffSize = rxBufferSize + 1;
+    this->txBuffSize = txBufferSize + 1;
 
     this->rxBuff = NULL;
     this->txBuff = NULL;
@@ -545,7 +546,7 @@
             return result;
     }
 
-    char c = (char)getChar(mode);
+    int c = getChar(mode);
 
     unlockRx();
 
@@ -834,7 +835,6 @@
 
     detach(Serial::RxIrq);
 
-    serial_free(&_serial);
     serial_init(&_serial, tx, rx);
 
     attach(this, &MicroBitSerial::dataReceived, Serial::RxIrq);
@@ -853,6 +853,8 @@
 /**
   * Configures an event to be fired after "len" characters.
   *
+  * Will generate an event with the ID: MICROBIT_ID_SERIAL and the value MICROBIT_SERIAL_EVT_HEAD_MATCH.
+  *
   * @param len the number of characters to wait before triggering the event.
   *
   * @param mode the selected mode, one of: ASYNC, SYNC_SPINWAIT, SYNC_SLEEP. Each mode
@@ -885,7 +887,9 @@
 /**
   * Configures an event to be fired on a match with one of the delimeters.
   *
-  * @param delimeters the characters to match received characters against e.g. ManagedString("\r\n")
+  * Will generate an event with the ID: MICROBIT_ID_SERIAL and the value MICROBIT_SERIAL_EVT_DELIM_MATCH.
+  *
+  * @param delimeters the characters to match received characters against e.g. ManagedString("\n")
   *
   * @param mode the selected mode, one of: ASYNC, SYNC_SPINWAIT, SYNC_SLEEP. Each mode
   *        gives a different behaviour:
@@ -957,7 +961,8 @@
 
     lockRx();
 
-    this->rxBuffSize = size;
+    // + 1 so there is a usable buffer size, of the size the user requested.
+    this->rxBuffSize = size + 1;
 
     int result = initialiseRx();
 
@@ -981,7 +986,8 @@
 
     lockTx();
 
-    this->txBuffSize = size;
+    // + 1 so there is a usable buffer size, of the size the user requested.
+    this->txBuffSize = size + 1;
 
     int result = initialiseTx();