Rebase onto upstream/main, adapt to cleaned-up circular buffer interface
parent
ffae941a28
commit
9122a33693
|
|
@ -8,29 +8,29 @@ UserInput userInput;
|
||||||
|
|
||||||
void UserInput::Step() {
|
void UserInput::Step() {
|
||||||
if (buttons::buttons.ButtonPressed(0))
|
if (buttons::buttons.ButtonPressed(0))
|
||||||
eventQueue.push_back(Event::Left);
|
eventQueue.push(Event::Left);
|
||||||
if (buttons::buttons.ButtonPressed(1))
|
if (buttons::buttons.ButtonPressed(1))
|
||||||
eventQueue.push_back(Event::Middle);
|
eventQueue.push(Event::Middle);
|
||||||
if (buttons::buttons.ButtonPressed(2))
|
if (buttons::buttons.ButtonPressed(2))
|
||||||
eventQueue.push_back(Event::Right);
|
eventQueue.push(Event::Right);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserInput::ProcessMessage(uint8_t ev) {
|
void UserInput::ProcessMessage(uint8_t ev) {
|
||||||
eventQueue.push_back((Event)ev);
|
eventQueue.push((Event)ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
Event UserInput::ConsumeEvent() {
|
Event UserInput::ConsumeEvent() {
|
||||||
if (eventQueue.IsEmpty())
|
if (eventQueue.empty())
|
||||||
return Event::NoEvent;
|
return Event::NoEvent;
|
||||||
Event rv;
|
Event rv;
|
||||||
eventQueue.ConsumeFirst(rv);
|
eventQueue.pop(rv);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserInput::Clear() {
|
void UserInput::Clear() {
|
||||||
while (!eventQueue.IsEmpty()) {
|
while (!eventQueue.empty()) {
|
||||||
Event x;
|
Event x;
|
||||||
eventQueue.ConsumeFirst(x);
|
eventQueue.pop(x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "../hal/circle_buffer.hpp"
|
#include "../hal/circular_buffer.h"
|
||||||
|
|
||||||
namespace modules {
|
namespace modules {
|
||||||
|
|
||||||
|
|
@ -29,13 +29,13 @@ public:
|
||||||
Event ConsumeEvent();
|
Event ConsumeEvent();
|
||||||
|
|
||||||
/// @returns true if there is at least one event in the event queue
|
/// @returns true if there is at least one event in the event queue
|
||||||
bool AnyEvent() const { return !eventQueue.IsEmpty(); }
|
bool AnyEvent() const { return !eventQueue.empty(); }
|
||||||
|
|
||||||
/// Remove all buffered events from the event queue
|
/// Remove all buffered events from the event queue
|
||||||
void Clear();
|
void Clear();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CircleBuffer<Event, 4> eventQueue;
|
CircularBuffer<Event, uint_fast8_t, 4> eventQueue;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern UserInput userInput;
|
extern UserInput userInput;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue