Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: nRF24L01P_Hello_World nRF24L01P
circularBuffer.cpp@5:668dd9395ca5, 2021-04-16 (annotated)
- Committer:
- voltxd
- Date:
- Fri Apr 16 16:01:03 2021 +0000
- Revision:
- 5:668dd9395ca5
ok;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
voltxd | 5:668dd9395ca5 | 1 | #include "circularBuffer.h" |
voltxd | 5:668dd9395ca5 | 2 | |
voltxd | 5:668dd9395ca5 | 3 | //-----------------------------TX-----------------------------// |
voltxd | 5:668dd9395ca5 | 4 | int cbTxHead; |
voltxd | 5:668dd9395ca5 | 5 | int cbTxTail; |
voltxd | 5:668dd9395ca5 | 6 | char cbTxBuffer[BUFFER_SIZE]; |
voltxd | 5:668dd9395ca5 | 7 | |
voltxd | 5:668dd9395ca5 | 8 | void cbTxSendMessage(char* message, int length) |
voltxd | 5:668dd9395ca5 | 9 | { |
voltxd | 5:668dd9395ca5 | 10 | int i; |
voltxd | 5:668dd9395ca5 | 11 | if (cbTxRemainingSize() > length) |
voltxd | 5:668dd9395ca5 | 12 | for (i = 0; i < length; i++) |
voltxd | 5:668dd9395ca5 | 13 | cbTxAddOne(message[i]); |
voltxd | 5:668dd9395ca5 | 14 | } |
voltxd | 5:668dd9395ca5 | 15 | |
voltxd | 5:668dd9395ca5 | 16 | void cbTxAddOne(char value) |
voltxd | 5:668dd9395ca5 | 17 | { |
voltxd | 5:668dd9395ca5 | 18 | if (cbTxRemainingSize() > 0) |
voltxd | 5:668dd9395ca5 | 19 | { |
voltxd | 5:668dd9395ca5 | 20 | cbTxBuffer[cbTxHead++] = value; |
voltxd | 5:668dd9395ca5 | 21 | if (cbTxHead >= BUFFER_SIZE) |
voltxd | 5:668dd9395ca5 | 22 | cbTxHead = 0; |
voltxd | 5:668dd9395ca5 | 23 | } |
voltxd | 5:668dd9395ca5 | 24 | } |
voltxd | 5:668dd9395ca5 | 25 | |
voltxd | 5:668dd9395ca5 | 26 | char cbTxGetOne() |
voltxd | 5:668dd9395ca5 | 27 | { |
voltxd | 5:668dd9395ca5 | 28 | char value = cbTxBuffer[cbTxTail++]; |
voltxd | 5:668dd9395ca5 | 29 | if (cbTxTail >= BUFFER_SIZE) |
voltxd | 5:668dd9395ca5 | 30 | cbTxTail = 0; |
voltxd | 5:668dd9395ca5 | 31 | return value; |
voltxd | 5:668dd9395ca5 | 32 | } |
voltxd | 5:668dd9395ca5 | 33 | |
voltxd | 5:668dd9395ca5 | 34 | int cbTxRemainingSize() |
voltxd | 5:668dd9395ca5 | 35 | { |
voltxd | 5:668dd9395ca5 | 36 | int size; |
voltxd | 5:668dd9395ca5 | 37 | if (cbTxTail > cbTxHead) |
voltxd | 5:668dd9395ca5 | 38 | size = cbTxTail - cbTxHead; |
voltxd | 5:668dd9395ca5 | 39 | else |
voltxd | 5:668dd9395ca5 | 40 | size = BUFFER_SIZE - (cbTxHead - cbTxTail); |
voltxd | 5:668dd9395ca5 | 41 | return size; |
voltxd | 5:668dd9395ca5 | 42 | } |
voltxd | 5:668dd9395ca5 | 43 | |
voltxd | 5:668dd9395ca5 | 44 | int cbTxGetDataSize() |
voltxd | 5:668dd9395ca5 | 45 | { |
voltxd | 5:668dd9395ca5 | 46 | return BUFFER_SIZE - cbTxRemainingSize(); |
voltxd | 5:668dd9395ca5 | 47 | } |
voltxd | 5:668dd9395ca5 | 48 | |
voltxd | 5:668dd9395ca5 | 49 | |
voltxd | 5:668dd9395ca5 | 50 | //-----------------------------RX-----------------------------// |
voltxd | 5:668dd9395ca5 | 51 | int cbRxHead; |
voltxd | 5:668dd9395ca5 | 52 | int cbRxTail; |
voltxd | 5:668dd9395ca5 | 53 | char cbRxBuffer[BUFFER_SIZE]; |
voltxd | 5:668dd9395ca5 | 54 | |
voltxd | 5:668dd9395ca5 | 55 | void cbRxAddOne(char value) |
voltxd | 5:668dd9395ca5 | 56 | { |
voltxd | 5:668dd9395ca5 | 57 | if (cbRxRemainingSize() > 0) |
voltxd | 5:668dd9395ca5 | 58 | { |
voltxd | 5:668dd9395ca5 | 59 | cbRxBuffer[cbRxHead++] = value; |
voltxd | 5:668dd9395ca5 | 60 | if (cbRxHead >= BUFFER_SIZE) |
voltxd | 5:668dd9395ca5 | 61 | cbRxHead = 0; |
voltxd | 5:668dd9395ca5 | 62 | } |
voltxd | 5:668dd9395ca5 | 63 | } |
voltxd | 5:668dd9395ca5 | 64 | |
voltxd | 5:668dd9395ca5 | 65 | char cbRxGetOne() |
voltxd | 5:668dd9395ca5 | 66 | { |
voltxd | 5:668dd9395ca5 | 67 | char value = cbRxBuffer[cbRxTail++]; |
voltxd | 5:668dd9395ca5 | 68 | if (cbRxTail >= BUFFER_SIZE) |
voltxd | 5:668dd9395ca5 | 69 | cbRxTail = 0; |
voltxd | 5:668dd9395ca5 | 70 | return value; |
voltxd | 5:668dd9395ca5 | 71 | } |
voltxd | 5:668dd9395ca5 | 72 | |
voltxd | 5:668dd9395ca5 | 73 | unsigned char cbRxIsDataAvailable() |
voltxd | 5:668dd9395ca5 | 74 | { |
voltxd | 5:668dd9395ca5 | 75 | if (cbRxTail != cbRxHead) |
voltxd | 5:668dd9395ca5 | 76 | return 1; |
voltxd | 5:668dd9395ca5 | 77 | else |
voltxd | 5:668dd9395ca5 | 78 | return 0; |
voltxd | 5:668dd9395ca5 | 79 | } |
voltxd | 5:668dd9395ca5 | 80 | |
voltxd | 5:668dd9395ca5 | 81 | int cbRxRemainingSize() |
voltxd | 5:668dd9395ca5 | 82 | { |
voltxd | 5:668dd9395ca5 | 83 | int size; |
voltxd | 5:668dd9395ca5 | 84 | if (cbRxTail > cbRxHead) |
voltxd | 5:668dd9395ca5 | 85 | size = cbRxTail - cbRxHead; |
voltxd | 5:668dd9395ca5 | 86 | else |
voltxd | 5:668dd9395ca5 | 87 | size = BUFFER_SIZE - (cbRxHead - cbRxTail); |
voltxd | 5:668dd9395ca5 | 88 | return size; |
voltxd | 5:668dd9395ca5 | 89 | } |
voltxd | 5:668dd9395ca5 | 90 | |
voltxd | 5:668dd9395ca5 | 91 | int cbRxGetDataSize() |
voltxd | 5:668dd9395ca5 | 92 | { |
voltxd | 5:668dd9395ca5 | 93 | return BUFFER_SIZE - cbRxRemainingSize(); |
voltxd | 5:668dd9395ca5 | 94 | } |