From f54b68d3dbc16346d8bea9e981edeed626d2b0f5 Mon Sep 17 00:00:00 2001
From: Terraneo Federico <fede.tft@miosix.org>
Date: Sun, 30 Apr 2023 17:17:36 +0200
Subject: [PATCH] Code reuse in class Queue

---
 miosix/kernel/queue.h | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/miosix/kernel/queue.h b/miosix/kernel/queue.h
index 81f5217f..9b62d592 100644
--- a/miosix/kernel/queue.h
+++ b/miosix/kernel/queue.h
@@ -218,16 +218,11 @@ template <typename T, unsigned int len>
 void Queue<T,len>::put(const T& elem)
 {
     FastInterruptDisableLock dLock;
-    IRQwakeWaitingThread();
-    while(isFull())
+    while(IRQput(elem)==false)
     {
         waiting=Thread::IRQgetCurrentThread();
         Thread::IRQenableIrqAndWait(dLock);
-        IRQwakeWaitingThread();
     }
-    numElem++;
-    buffer[putPos]=elem;
-    if(++putPos==len) putPos=0;
 }
 
 template <typename T, unsigned int len>
@@ -258,16 +253,11 @@ template <typename T, unsigned int len>
 void Queue<T,len>::get(T& elem)
 {
     FastInterruptDisableLock dLock;
-    IRQwakeWaitingThread();
-    while(isEmpty())
+    while(IRQget(elem)==false)
     {
         waiting=Thread::IRQgetCurrentThread();
         Thread::IRQenableIrqAndWait(dLock);
-        IRQwakeWaitingThread();
     }
-    numElem--;
-    elem=buffer[getPos];
-    if(++getPos==len) getPos=0;
 }
 
 template <typename T, unsigned int len>
-- 
GitLab