sistemaMicrontrolador3
Dependencies: mbed
RingBuffer/Bufferinguint.cpp@0:390287d3dcb6, 2016-12-19 (annotated)
- Committer:
- JuanManuelAmador
- Date:
- Mon Dec 19 15:13:15 2016 +0000
- Revision:
- 0:390287d3dcb6
sistemaMicrocontrolador3;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JuanManuelAmador | 0:390287d3dcb6 | 1 | #include "Bufferinguint.h" |
JuanManuelAmador | 0:390287d3dcb6 | 2 | |
JuanManuelAmador | 0:390287d3dcb6 | 3 | Bufferinguint::Bufferinguint() |
JuanManuelAmador | 0:390287d3dcb6 | 4 | { |
JuanManuelAmador | 0:390287d3dcb6 | 5 | for(int i = 0; i < BUFFERSIZE; i++){ |
JuanManuelAmador | 0:390287d3dcb6 | 6 | data[i] = 0; |
JuanManuelAmador | 0:390287d3dcb6 | 7 | } |
JuanManuelAmador | 0:390287d3dcb6 | 8 | windex = 0; |
JuanManuelAmador | 0:390287d3dcb6 | 9 | rindex = 0; |
JuanManuelAmador | 0:390287d3dcb6 | 10 | full = false; |
JuanManuelAmador | 0:390287d3dcb6 | 11 | empty = true; |
JuanManuelAmador | 0:390287d3dcb6 | 12 | bufSize = BUFFERSIZE; |
JuanManuelAmador | 0:390287d3dcb6 | 13 | } |
JuanManuelAmador | 0:390287d3dcb6 | 14 | |
JuanManuelAmador | 0:390287d3dcb6 | 15 | void Bufferinguint::put(unsigned int val) |
JuanManuelAmador | 0:390287d3dcb6 | 16 | { |
JuanManuelAmador | 0:390287d3dcb6 | 17 | if(!full) |
JuanManuelAmador | 0:390287d3dcb6 | 18 | { |
JuanManuelAmador | 0:390287d3dcb6 | 19 | data[windex] = val; |
JuanManuelAmador | 0:390287d3dcb6 | 20 | windex++; |
JuanManuelAmador | 0:390287d3dcb6 | 21 | empty = false; |
JuanManuelAmador | 0:390287d3dcb6 | 22 | if(windex >= bufSize) |
JuanManuelAmador | 0:390287d3dcb6 | 23 | { |
JuanManuelAmador | 0:390287d3dcb6 | 24 | windex = 0; |
JuanManuelAmador | 0:390287d3dcb6 | 25 | } |
JuanManuelAmador | 0:390287d3dcb6 | 26 | if(getDif() >= bufSize - 1){ |
JuanManuelAmador | 0:390287d3dcb6 | 27 | full = true; |
JuanManuelAmador | 0:390287d3dcb6 | 28 | } |
JuanManuelAmador | 0:390287d3dcb6 | 29 | /*if(windex >= rindex) |
JuanManuelAmador | 0:390287d3dcb6 | 30 | { |
JuanManuelAmador | 0:390287d3dcb6 | 31 | full = true; |
JuanManuelAmador | 0:390287d3dcb6 | 32 | }*/ |
JuanManuelAmador | 0:390287d3dcb6 | 33 | } |
JuanManuelAmador | 0:390287d3dcb6 | 34 | } |
JuanManuelAmador | 0:390287d3dcb6 | 35 | |
JuanManuelAmador | 0:390287d3dcb6 | 36 | unsigned int Bufferinguint::get() |
JuanManuelAmador | 0:390287d3dcb6 | 37 | { |
JuanManuelAmador | 0:390287d3dcb6 | 38 | unsigned int temp = 0; |
JuanManuelAmador | 0:390287d3dcb6 | 39 | if(!empty) |
JuanManuelAmador | 0:390287d3dcb6 | 40 | { |
JuanManuelAmador | 0:390287d3dcb6 | 41 | temp = data[rindex]; |
JuanManuelAmador | 0:390287d3dcb6 | 42 | data[rindex] = 0; |
JuanManuelAmador | 0:390287d3dcb6 | 43 | full = false; |
JuanManuelAmador | 0:390287d3dcb6 | 44 | rindex++; |
JuanManuelAmador | 0:390287d3dcb6 | 45 | if(rindex >= bufSize) |
JuanManuelAmador | 0:390287d3dcb6 | 46 | { |
JuanManuelAmador | 0:390287d3dcb6 | 47 | rindex = 0; |
JuanManuelAmador | 0:390287d3dcb6 | 48 | } |
JuanManuelAmador | 0:390287d3dcb6 | 49 | if(getDif() == 0){ |
JuanManuelAmador | 0:390287d3dcb6 | 50 | empty = true; |
JuanManuelAmador | 0:390287d3dcb6 | 51 | } |
JuanManuelAmador | 0:390287d3dcb6 | 52 | /*if(rindex >= windex) |
JuanManuelAmador | 0:390287d3dcb6 | 53 | { |
JuanManuelAmador | 0:390287d3dcb6 | 54 | empty = true; |
JuanManuelAmador | 0:390287d3dcb6 | 55 | }*/ |
JuanManuelAmador | 0:390287d3dcb6 | 56 | } |
JuanManuelAmador | 0:390287d3dcb6 | 57 | return temp; |
JuanManuelAmador | 0:390287d3dcb6 | 58 | } |
JuanManuelAmador | 0:390287d3dcb6 | 59 | |
JuanManuelAmador | 0:390287d3dcb6 | 60 | bool Bufferinguint::isFull() |
JuanManuelAmador | 0:390287d3dcb6 | 61 | { |
JuanManuelAmador | 0:390287d3dcb6 | 62 | return full; |
JuanManuelAmador | 0:390287d3dcb6 | 63 | } |
JuanManuelAmador | 0:390287d3dcb6 | 64 | |
JuanManuelAmador | 0:390287d3dcb6 | 65 | bool Bufferinguint::isEmpty() |
JuanManuelAmador | 0:390287d3dcb6 | 66 | { |
JuanManuelAmador | 0:390287d3dcb6 | 67 | return empty; |
JuanManuelAmador | 0:390287d3dcb6 | 68 | } |
JuanManuelAmador | 0:390287d3dcb6 | 69 | |
JuanManuelAmador | 0:390287d3dcb6 | 70 | int Bufferinguint::getSize() |
JuanManuelAmador | 0:390287d3dcb6 | 71 | { |
JuanManuelAmador | 0:390287d3dcb6 | 72 | return bufSize; |
JuanManuelAmador | 0:390287d3dcb6 | 73 | } |
JuanManuelAmador | 0:390287d3dcb6 | 74 | |
JuanManuelAmador | 0:390287d3dcb6 | 75 | unsigned int Bufferinguint::getWritingIndex() |
JuanManuelAmador | 0:390287d3dcb6 | 76 | { |
JuanManuelAmador | 0:390287d3dcb6 | 77 | return windex; |
JuanManuelAmador | 0:390287d3dcb6 | 78 | } |
JuanManuelAmador | 0:390287d3dcb6 | 79 | |
JuanManuelAmador | 0:390287d3dcb6 | 80 | unsigned int Bufferinguint::getReadingIndex() |
JuanManuelAmador | 0:390287d3dcb6 | 81 | { |
JuanManuelAmador | 0:390287d3dcb6 | 82 | return rindex; |
JuanManuelAmador | 0:390287d3dcb6 | 83 | } |
JuanManuelAmador | 0:390287d3dcb6 | 84 | |
JuanManuelAmador | 0:390287d3dcb6 | 85 | unsigned int Bufferinguint::getDif() |
JuanManuelAmador | 0:390287d3dcb6 | 86 | { |
JuanManuelAmador | 0:390287d3dcb6 | 87 | unsigned int dif = 0; |
JuanManuelAmador | 0:390287d3dcb6 | 88 | if((int)(windex-rindex)>=0) { dif = windex-rindex; } |
JuanManuelAmador | 0:390287d3dcb6 | 89 | else { dif = bufSize+windex-rindex; } |
JuanManuelAmador | 0:390287d3dcb6 | 90 | return dif; |
JuanManuelAmador | 0:390287d3dcb6 | 91 | } |