WiP: support for LSM6DSxx

This commit is contained in:
Raphael Coeffic
2022-06-25 16:09:04 +02:00
committed by Raphael Coeffic
parent df83a82285
commit 0b8d93ca88
44 changed files with 356 additions and 429 deletions
+2 -2
View File
@@ -128,9 +128,9 @@ void menuRadioDiagAnalogs(event_t event)
entryCount++;
}
#if defined(GYRO)
#if defined(IMU)
y += FH;
lcdDrawTextAlignedLeft(y, STR_GYRO);
lcdDrawTextAlignedLeft(y, STR_IMU);
y += FH;
uint8_t x = INDENT_WIDTH;
lcdDrawText(x, y, "X:");
+17 -17
View File
@@ -69,9 +69,9 @@ enum {
CASE_HAPTIC(ITEM_RADIO_SETUP_HAPTIC_MODE)
CASE_HAPTIC(ITEM_RADIO_SETUP_HAPTIC_LENGTH)
CASE_HAPTIC(ITEM_RADIO_SETUP_HAPTIC_STRENGTH)
CASE_GYRO(ITEM_RADIO_SETUP_GYRO_LABEL)
CASE_GYRO(ITEM_RADIO_SETUP_GYRO_MAX)
CASE_GYRO(ITEM_RADIO_SETUP_GYRO_OFFSET)
CASE_IMU(ITEM_RADIO_SETUP_IMU_LABEL)
CASE_IMU(ITEM_RADIO_SETUP_IMU_MAX)
CASE_IMU(ITEM_RADIO_SETUP_IMU_OFFSET)
ITEM_RADIO_SETUP_CONTRAST,
ITEM_RADIO_SETUP_ALARMS_LABEL,
ITEM_RADIO_SETUP_BATTERY_WARNING,
@@ -152,9 +152,9 @@ void menuRadioSetup(event_t event)
CASE_HAPTIC(0)
CASE_HAPTIC(0)
CASE_HAPTIC(0)
CASE_GYRO(LABEL(GYRO))
CASE_GYRO(0)
CASE_GYRO(0)
CASE_IMU(LABEL(IMU))
CASE_IMU(0)
CASE_IMU(0)
0, LABEL(ALARMS), 0, CASE_CAPACITY(0)
0, 0, 0, 0, /* ITEM_RADIO_SETUP_INACTIVITY_ALARM ITEM_RADIO_SETUP_MEMORY_WARNING ITEM_RADIO_SETUP_ALARM_WARNING ITEM_RADIO_SETUP_RSSI_POWEROFF_ALARM */
CASE_BACKLIGHT(LABEL(BACKLIGHT))
@@ -387,29 +387,29 @@ void menuRadioSetup(event_t event)
break;
#endif
#if defined(GYRO)
case ITEM_RADIO_SETUP_GYRO_LABEL:
lcdDrawTextAlignedLeft(y, STR_GYRO_LABEL);
#if defined(IMU)
case ITEM_RADIO_SETUP_IMU_LABEL:
lcdDrawTextAlignedLeft(y, STR_IMU_LABEL);
break;
case ITEM_RADIO_SETUP_GYRO_MAX:
lcdDrawText(INDENT_WIDTH, y, STR_GYRO_MAX);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, GYRO_MAX_DEFAULT + g_eeGeneral.gyroMax, attr|LEFT);
case ITEM_RADIO_SETUP_IMU_MAX:
lcdDrawText(INDENT_WIDTH, y, STR_IMU_MAX);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, IMU_MAX_DEFAULT + g_eeGeneral.imuMax, attr|LEFT);
lcdDrawChar(lcdLastRightPos, y, '@', attr);
if (attr) {
CHECK_INCDEC_GENVAR(event, g_eeGeneral.gyroMax, GYRO_MAX_DEFAULT - GYRO_MAX_RANGE, GYRO_MAX_DEFAULT + GYRO_MAX_RANGE);
CHECK_INCDEC_GENVAR(event, g_eeGeneral.imuMax, IMU_MAX_DEFAULT - IMU_MAX_RANGE, IMU_MAX_DEFAULT + IMU_MAX_RANGE);
lcdDrawText(LCD_W-4*FW, y, "(");
lcdDrawNumber(lcdLastRightPos, y, max(abs(gyro.outputs[0]), abs(gyro.outputs[1])) * 180 / 1024);
lcdDrawText(lcdLastRightPos, y, ")");
}
break;
case ITEM_RADIO_SETUP_GYRO_OFFSET:
lcdDrawText(INDENT_WIDTH, y, STR_GYRO_OFFSET);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.gyroOffset, attr|LEFT);
case ITEM_RADIO_SETUP_IMU_OFFSET:
lcdDrawText(INDENT_WIDTH, y, STR_IMU_OFFSET);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.imuOffset, attr|LEFT);
lcdDrawChar(lcdLastRightPos, y, '@', attr);
if (attr) {
CHECK_INCDEC_GENVAR(event, g_eeGeneral.gyroOffset, GYRO_OFFSET_MIN, GYRO_OFFSET_MAX);
CHECK_INCDEC_GENVAR(event, g_eeGeneral.imuOffset, IMU_OFFSET_MIN, IMU_OFFSET_MAX);
lcdDrawText(LCD_W-4*FW, y, "(");
lcdDrawNumber(lcdLastRightPos, y, gyro.outputs[0] * 180 / 1024);
lcdDrawText(lcdLastRightPos, y, ")");
+16 -16
View File
@@ -24,9 +24,9 @@
#include "libopenui.h"
#include "../../hal/adc_driver.h"
#if defined(IMU_LSM6DS33)
#include "imu_lsm6ds33.h"
#endif
// #if defined(IMU_LSM6DS33)
// #include "imu_lsm6ds33.h"
// #endif
#if defined(RADIO_FAMILY_T16) || defined(PCBNV14)
#include "../../targets/horus/flyskyHallStick_driver.h"
@@ -114,19 +114,19 @@ class AnaCalibratedViewWindow: public Window {
}
}
#if !defined(SIMU) && defined(IMU_LSM6DS33)
coord_t yimu = MENU_CONTENT_TOP + 3 * FH;
coord_t ximu = MENUS_MARGIN_LEFT;
char imudata[80];
sprintf(imudata, "IMU temp.: %.2f deg.C, Gyro XYZ [rad/s]: %.2f, %.2f, %.2f",
IMUoutput.fTemperatureDegC,
IMUoutput.fGyroXradps, IMUoutput.fGyroYradps, IMUoutput.fGyroZradps);
dc->drawText(ximu, yimu, imudata);
yimu = MENU_CONTENT_TOP + 4 * FH;
sprintf(imudata, "Linear acceleration XYZ [m/s^2]: %.2f %.2f %.2f",
IMUoutput.fAccX, IMUoutput.fAccY, IMUoutput.fAccZ);
dc->drawText(ximu, yimu, imudata);
#endif
// #if !defined(SIMU) && defined(IMU_LSM6DS33)
// coord_t yimu = MENU_CONTENT_TOP + 3 * FH;
// coord_t ximu = MENUS_MARGIN_LEFT;
// char imudata[80];
// sprintf(imudata, "IMU temp.: %.2f deg.C, Gyro XYZ [rad/s]: %.2f, %.2f, %.2f",
// IMUoutput.fTemperatureDegC,
// IMUoutput.fGyroXradps, IMUoutput.fGyroYradps, IMUoutput.fGyroZradps);
// dc->drawText(ximu, yimu, imudata);
// yimu = MENU_CONTENT_TOP + 4 * FH;
// sprintf(imudata, "Linear acceleration XYZ [m/s^2]: %.2f %.2f %.2f",
// IMUoutput.fAccX, IMUoutput.fAccY, IMUoutput.fAccZ);
// dc->drawText(ximu, yimu, imudata);
// #endif
#if defined(HARDWARE_TOUCH)
TouchState rawTouchState = getInternalTouchState();