CCIMXDesktop
 
Loading...
Searching...
No Matches
icm20608_adapter.h
1#pragma once
2
3// Platform-specific includes
4#ifdef _WIN32
5#include <fstream> // Windows file handling
6#else
7#include <unistd.h> // UNIX file handling
8#endif
9
17typedef struct {
18 /* 3D Acceleration values */
19 struct {
20 float x;
21 float y;
22 float z;
24
25 /* 3D Rotation delta values */
26 struct {
27 float x;
28 float y;
29 float z;
30 } rol;
31
34
42class ICM20608 {
43public:
48 ICM20608() = default;
49
50 // Disable copy operations to ensure single ownership of device resource
51 ICM20608& operator=(const ICM20608&) = delete;
52 ICM20608(const ICM20608&) = delete;
53
61 bool get_package_sync(ICM20608AppData& empty_data_pack);
62
63private:
65 static constexpr const char* _dev_file_path = "/dev/icm20608";
66
71 void bind_dev_file();
72
73 // Platform-specific implementations
74#ifdef _WIN32
75 std::ifstream dev_stream;
76
82 bool get_package_sync_win32impl(ICM20608AppData& empty);
83#else
84 int private_fd { -1 };
85
91 bool get_package_sync_uniximpl(ICM20608AppData& empty);
92#endif
93};
Interface for ICM20608 inertial measurement unit (IMU) sensor.
Definition icm20608_adapter.h:42
ICM20608()=default
Default constructor.
bool get_package_sync(ICM20608AppData &empty_data_pack)
Synchronously reads sensor data package.
Definition icm20608_adapter.cpp:88
ICM20608 & operator=(const ICM20608 &)=delete
Deleted copy assignment.
ICM20608(const ICM20608 &)=delete
Deleted copy constructor.
Processed sensor data with float values.
Definition icm20608_adapter.h:17
float x
Acceleration along X-axis (in g units)
Definition icm20608_adapter.h:20
float y
Acceleration along Y-axis (in g units)
Definition icm20608_adapter.h:21
float temperature
Temperature reading from sensor (in Celsius)
Definition icm20608_adapter.h:32
float z
Acceleration along Z-axis (in g units)
Definition icm20608_adapter.h:22
3D acceleration values in raw sensor units
3D rotation delta values in raw sensor units