Library to use a wifly module: RN 131 C/G

Dependents:   RN-XV_simple_server

Committer:
samux
Date:
Wed May 09 11:46:39 2012 +0000
Revision:
19:cf1a7a5cc8d6
Parent:
17:56f3c4da1ea8

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 17:56f3c4da1ea8 1 #ifndef CBUFFER_H
samux 17:56f3c4da1ea8 2 #define CBUFFER_H
samux 17:56f3c4da1ea8 3
samux 17:56f3c4da1ea8 4 #define MAX_BUF 128
samux 17:56f3c4da1ea8 5
samux 17:56f3c4da1ea8 6 class CBuffer {
samux 17:56f3c4da1ea8 7 public:
samux 17:56f3c4da1ea8 8 CBuffer() {
samux 17:56f3c4da1ea8 9 write = 0;
samux 17:56f3c4da1ea8 10 read = 0;
samux 17:56f3c4da1ea8 11 size = MAX_BUF + 1;
samux 17:56f3c4da1ea8 12 };
samux 17:56f3c4da1ea8 13
samux 17:56f3c4da1ea8 14 bool isFull() {
samux 17:56f3c4da1ea8 15 return ((write + 1) % size == read);
samux 17:56f3c4da1ea8 16 };
samux 17:56f3c4da1ea8 17
samux 17:56f3c4da1ea8 18 bool isEmpty() {
samux 17:56f3c4da1ea8 19 return (read == write);
samux 17:56f3c4da1ea8 20 };
samux 17:56f3c4da1ea8 21
samux 17:56f3c4da1ea8 22 void queue(uint8_t k) {
samux 17:56f3c4da1ea8 23 if (isFull()) {
samux 17:56f3c4da1ea8 24 read++;
samux 17:56f3c4da1ea8 25 read %= size;
samux 17:56f3c4da1ea8 26 }
samux 17:56f3c4da1ea8 27 buf[write++] = k;
samux 17:56f3c4da1ea8 28 write %= size;
samux 17:56f3c4da1ea8 29 }
samux 17:56f3c4da1ea8 30
samux 17:56f3c4da1ea8 31 uint16_t available() {
samux 17:56f3c4da1ea8 32 return (write >= read) ? write - read : size - read + write;
samux 17:56f3c4da1ea8 33 };
samux 17:56f3c4da1ea8 34
samux 17:56f3c4da1ea8 35 bool dequeue(uint8_t * c) {
samux 17:56f3c4da1ea8 36 if (!isEmpty()) {
samux 17:56f3c4da1ea8 37 *c = buf[read++];
samux 17:56f3c4da1ea8 38 read %= size;
samux 17:56f3c4da1ea8 39 }
samux 17:56f3c4da1ea8 40 return(!isEmpty());
samux 17:56f3c4da1ea8 41 };
samux 17:56f3c4da1ea8 42
samux 17:56f3c4da1ea8 43
samux 17:56f3c4da1ea8 44 private:
samux 17:56f3c4da1ea8 45 volatile uint16_t write;
samux 17:56f3c4da1ea8 46 volatile uint16_t read;
samux 17:56f3c4da1ea8 47 uint16_t size;
samux 17:56f3c4da1ea8 48 uint8_t buf[MAX_BUF + 1];
samux 17:56f3c4da1ea8 49 };
samux 17:56f3c4da1ea8 50
samux 17:56f3c4da1ea8 51 #endif