update code
Dependencies: X_NUCLEO_IKS01A1 mbed-rtos mbed
Diff: main.cpp
- Revision:
- 2:c5fb78148ccc
- Parent:
- 1:4cd93767691a
- Child:
- 3:f61ae69ed662
--- a/main.cpp Tue May 03 10:39:27 2016 +0000 +++ b/main.cpp Tue May 03 10:51:55 2016 +0000 @@ -350,7 +350,7 @@ }; -void initialiseBufferData(){ +/**void initialiseBufferData(){ //create mutex lock pthread_mutex_init(&mutex, NULL); @@ -365,7 +365,7 @@ //init buffer counter = 0; -} +}**/ //producer thread void *producer(char newItem[], BufferEndPointer *endPointer, BufferSize *bufferSize){ @@ -396,7 +396,38 @@ } //consumer thread -void *consumer(void *param) { +void *consumer(BufferStartPointer *startPointer, BufferSize *bufferSize, BufferEndPointer *endPointer) { + + while(!bufferSize->lock()){}; + + int size = bufferSize -> getBufferSize(); + + while(size > 0){ + //sleep for random amount of time + + //get the buffer + bufferLock->lock(); + + while(!endPointer->lock()){}; + + int index = endPointer->getBufferEndPointer(); + + endPointer -> unlock; + + while(!startPointer->lock()){}; + + startPointer->plusOne(); + memorySample[index] = buffer_item[startPointer->getBufferStartPointer()]; + startPointer->unlock(); + bufferLock->unlock(); + + + while(!bufferSize->lock()){}; + bufferSize ->deincreaseBufferSize(); + size = bufferSize -> getBufferSize(); + + + } }