Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F102411367
ring-buffer.c
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Feb 20, 11:08
Size
1012 B
Mime Type
text/x-c
Expires
Sat, Feb 22, 11:08 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
24351361
Attached To
R6619 Oncilla Motordriver Firmware
ring-buffer.c
View Options
#include "ring-buffer.h"
//adds a value into the buffer, if BUFFER_CAPACITY is not reached
void pushIntoBuffer(RingBuffer *ringBuffer, int data)
{
if(ringBuffer->numVals >= BUFFER_CAPACITY)
{
return;
}
ringBuffer->data[ringBuffer->writeIndex] = data;
++(ringBuffer->writeIndex);
++(ringBuffer->numVals);
ringBuffer->writeIndex &= BUFFER_MASK;
}
//gets a value from the buffer and removes it, if the buffer is not empty
long popFromBuffer(RingBuffer *ringBuffer)
{
//check if buffer empty
if(ringBuffer->numVals <= 0)
{
return ringBuffer->lastPoppedVal;
}
int data = ringBuffer->data[ringBuffer->readIndex];
ringBuffer->lastPoppedVal = data;
++(ringBuffer->readIndex);
--(ringBuffer->numVals);
ringBuffer->readIndex &= BUFFER_MASK;
return data;
}
void initBuffer(RingBuffer *ringBuffer)
{
ringBuffer->numVals = 0;
ringBuffer->readIndex = 0;
ringBuffer->writeIndex = 0;
ringBuffer->lastPoppedVal = 0;
}
Event Timeline
Log In to Comment