https://github.com/WebBluetoothCG/demos/pull/42
Dependencies: BLE_API mbed-dev-bin nRF51822
Fork of microbit-dal by
Diff: source/drivers/MicroBitSerial.cpp
- 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();