Skip to content

Commit 4d87dd7

Browse files
committed
Implement support for I2C QMI8658 IMU
Signed-off-by: Daniël van de Giessen <[email protected]>
1 parent 54efdf7 commit 4d87dd7

File tree

16 files changed

+1380
-21
lines changed

16 files changed

+1380
-21
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ src/addons/tilt.cpp
253253
src/addons/spi_analog_ads1256.cpp
254254
src/addons/gamepad_usb_host.cpp
255255
src/addons/gamepad_usb_host_listener.cpp
256+
src/addons/i2c_qmi8658.cpp
256257
src/animationstation/animation.cpp
257258
src/animationstation/animationstation.cpp
258259
src/animationstation/effects/chase.cpp
@@ -290,6 +291,7 @@ WiiExtension
290291
SNESpad
291292
pico_mbedtls
292293
nanopb
294+
QMI8658
293295
)
294296

295297
target_include_directories(${PROJECT_NAME} PUBLIC

headers/addons/i2c_qmi8658.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#ifndef _I2C_QMI8658_H
2+
#define _I2C_QMI8658_H
3+
4+
extern "C" {
5+
#include "QMI8658.h"
6+
}
7+
8+
#include "gpaddon.h"
9+
10+
#include "GamepadEnums.h"
11+
#include "peripheralmanager.h"
12+
13+
#ifndef I2C_QMI8658_ENABLED
14+
#define I2C_QMI8658_ENABLED 0
15+
#endif
16+
17+
// Analog Module Name
18+
#define I2C_QMI8658_Name "I2C_QMI8658"
19+
20+
class I2CQMI8658Input : public GPAddon {
21+
public:
22+
virtual bool available();
23+
virtual void setup();
24+
virtual void preprocess() {}
25+
virtual void process();
26+
virtual void postprocess(bool sent) {}
27+
virtual void reinit() {}
28+
virtual std::string name() { return I2C_QMI8658_Name; }
29+
private:
30+
PeripheralI2C *i2c;
31+
uint32_t uIntervalMS;
32+
uint32_t nextTimer;
33+
int16_t acc[3];
34+
int16_t gyro[3];
35+
};
36+
37+
#endif // _I2C_QMI8658_H_

lib/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ add_subdirectory(PicoPeripherals)
1111
add_subdirectory(rndis)
1212
add_subdirectory(WiiExtension)
1313
add_subdirectory(SNESpad)
14+
add_subdirectory(QMI8658)

lib/QMI8658/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
add_library(QMI8658 QMI8658.c)
2+
target_link_libraries(QMI8658 PUBLIC PicoPeripherals)
3+
target_include_directories(QMI8658 INTERFACE .)
4+
target_include_directories(QMI8658 PUBLIC . PicoPeripherals)

0 commit comments

Comments
 (0)