SkyPulse UAV V0.1
Loading...
Searching...
No Matches
gpiointerrupthandler.h
Go to the documentation of this file.
1#ifndef GPIOINTERRUPTHANDLER_H
2#define GPIOINTERRUPTHANDLER_H
3
4#include "pigpio.h"
5#include "observer.h"
6#include <QObject>
7#include <QThread>
8#include <QDebug>
9
10class GpioInterruptHandler : public QObject, public Observer
11{
12 Q_OBJECT
13
14public:
15 explicit GpioInterruptHandler(QObject *parent = nullptr);
17
18 void onUpdate(bool isInitialised) override;
19 bool initializeGpio(); // Initialise GPIOs, register interrupt handlers
20 void deinitializeGpio(); // Deinitialise GPIOs
21
22private:
23 static void gpioInterruptCallback(int gpio, int level, uint32_t tick, void *user);
24 QThread *GpioInterruptThread;
25
26 int debounceCounter = 0; // Counter for accumulating state changes
27 static const int debounceThreshold = 10; // Integral de-jittering threshold, assumed to be 5 changes
28 bool lastState = false; // Save the last state of the GPIO
29
30signals:
31 void mpu6050Interrupt(); // Signals emitted when an interrupt occurs in the MPU6050
32};
33
34#endif // GPIOINTERRUPTHANDLER_H
Definition gpiointerrupthandler.h:11
GpioInterruptHandler(QObject *parent=nullptr)
Definition gpiointerrupthandler.cpp:3
void onUpdate(bool isInitialised) override
Definition gpiointerrupthandler.cpp:18
~GpioInterruptHandler()
Definition gpiointerrupthandler.cpp:10
void deinitializeGpio()
Definition gpiointerrupthandler.cpp:47
bool initializeGpio()
Definition gpiointerrupthandler.cpp:31
Definition observer.h:4