Contents of data stream are pushed and popped to demonstrate usage of CircularBuffer API's.

Committer:
deepikabhavnani
Date:
Mon Oct 23 15:49:13 2017 +0000
Revision:
0:6c43979d0645
Inital copy of circular buffer example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
deepikabhavnani 0:6c43979d0645 1 /*
deepikabhavnani 0:6c43979d0645 2 * Copyright (c) 2016-2016, ARM Limited, All Rights Reserved
deepikabhavnani 0:6c43979d0645 3 * SPDX-License-Identifier: Apache-2.0
deepikabhavnani 0:6c43979d0645 4 *
deepikabhavnani 0:6c43979d0645 5 * Licensed under the Apache License, Version 2.0 (the "License"); you may
deepikabhavnani 0:6c43979d0645 6 * not use this file except in compliance with the License.
deepikabhavnani 0:6c43979d0645 7 * You may obtain a copy of the License at
deepikabhavnani 0:6c43979d0645 8 *
deepikabhavnani 0:6c43979d0645 9 * http://www.apache.org/licenses/LICENSE-2.0
deepikabhavnani 0:6c43979d0645 10 *
deepikabhavnani 0:6c43979d0645 11 * Unless required by applicable law or agreed to in writing, software
deepikabhavnani 0:6c43979d0645 12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
deepikabhavnani 0:6c43979d0645 13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
deepikabhavnani 0:6c43979d0645 14 * See the License for the specific language governing permissions and
deepikabhavnani 0:6c43979d0645 15 * limitations under the License.
deepikabhavnani 0:6c43979d0645 16 */
deepikabhavnani 0:6c43979d0645 17 #include "mbed.h"
deepikabhavnani 0:6c43979d0645 18 #include "platform/CircularBuffer.h"
deepikabhavnani 0:6c43979d0645 19
deepikabhavnani 0:6c43979d0645 20 #define BUF_SIZE 10
deepikabhavnani 0:6c43979d0645 21
deepikabhavnani 0:6c43979d0645 22 CircularBuffer<char, BUF_SIZE> buf;
deepikabhavnani 0:6c43979d0645 23 char data_stream[] = "DataToBeAddedToBuffer";
deepikabhavnani 0:6c43979d0645 24
deepikabhavnani 0:6c43979d0645 25 int main()
deepikabhavnani 0:6c43979d0645 26 {
deepikabhavnani 0:6c43979d0645 27 uint32_t bytes_written = 0;
deepikabhavnani 0:6c43979d0645 28
deepikabhavnani 0:6c43979d0645 29 while (!buf.full()) {
deepikabhavnani 0:6c43979d0645 30 buf.push(data_stream[bytes_written++]);
deepikabhavnani 0:6c43979d0645 31 }
deepikabhavnani 0:6c43979d0645 32
deepikabhavnani 0:6c43979d0645 33 printf("Circular buffer is full: \"%s\" or empty: \"%s\" \n",
deepikabhavnani 0:6c43979d0645 34 (buf.full()? "true":"false"),
deepikabhavnani 0:6c43979d0645 35 (buf.empty()? "true":"false") );
deepikabhavnani 0:6c43979d0645 36 printf ("Bytes written %d \n", bytes_written);
deepikabhavnani 0:6c43979d0645 37
deepikabhavnani 0:6c43979d0645 38 // If buffer is full, contents will be over-written
deepikabhavnani 0:6c43979d0645 39 buf.push(data_stream[bytes_written++]);
deepikabhavnani 0:6c43979d0645 40
deepikabhavnani 0:6c43979d0645 41 char data;
deepikabhavnani 0:6c43979d0645 42 printf ("Buffer contents: ");
deepikabhavnani 0:6c43979d0645 43 while (!buf.empty()) {
deepikabhavnani 0:6c43979d0645 44 buf.pop(data);
deepikabhavnani 0:6c43979d0645 45 printf("%c", data);
deepikabhavnani 0:6c43979d0645 46 }
deepikabhavnani 0:6c43979d0645 47 printf("\n");
deepikabhavnani 0:6c43979d0645 48
deepikabhavnani 0:6c43979d0645 49 printf("Circular buffer is full: \"%s\" or empty: \"%s\" \n",
deepikabhavnani 0:6c43979d0645 50 (buf.full()? "true":"false"),
deepikabhavnani 0:6c43979d0645 51 (buf.empty()? "true":"false") );
deepikabhavnani 0:6c43979d0645 52
deepikabhavnani 0:6c43979d0645 53 return 0;
deepikabhavnani 0:6c43979d0645 54
deepikabhavnani 0:6c43979d0645 55 }