mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-10-17 10:55:06 +00:00
35 lines
1014 B
C++
35 lines
1014 B
C++
// SPDX-License-Identifier: Apache-2.0
|
|
#include <tactility/drivers/imu.h>
|
|
#include <tactility/device.h>
|
|
|
|
#define IMU_DRIVER_API(driver) ((struct ImuApi*)driver->api)
|
|
|
|
extern "C" {
|
|
|
|
error_t imu_read_accel(Device* device, ImuAccelData* data) {
|
|
const auto* driver = device_get_driver(device);
|
|
auto* api = IMU_DRIVER_API(driver);
|
|
if (!api->read_accel) return ERROR_NOT_SUPPORTED;
|
|
return api->read_accel(device, data);
|
|
}
|
|
|
|
error_t imu_read_gyro(Device* device, ImuGyroData* data) {
|
|
const auto* driver = device_get_driver(device);
|
|
auto* api = IMU_DRIVER_API(driver);
|
|
if (!api->read_gyro) return ERROR_NOT_SUPPORTED;
|
|
return api->read_gyro(device, data);
|
|
}
|
|
|
|
error_t imu_read_temperature(Device* device, float* temperature_c) {
|
|
const auto* driver = device_get_driver(device);
|
|
auto* api = IMU_DRIVER_API(driver);
|
|
if (!api->read_temperature) return ERROR_NOT_SUPPORTED;
|
|
return api->read_temperature(device, temperature_c);
|
|
}
|
|
|
|
const DeviceType IMU_TYPE {
|
|
.name = "imu"
|
|
};
|
|
|
|
}
|