29#if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
32#if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
35#if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
38#if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
47#if SPI_SUPPORTS_CIRCULAR == TRUE
50#ifdef _CHIBIOS_RT_CONF_VER_6_1_
61 .cfg1 = SPI_CFG1_8BIT_MODE | SPI_CFG1_MBR_0 | SPI_CFG1_MBR_1,
62 .cfg2 = SPI_CFG2_8BIT_MODE | SPI_CFG2_CPOL | SPI_CFG2_CPHA
64 .cr1 = SPI_CR1_BR_0 | SPI_CR1_BR_1 | SPI_CR1_CPOL | SPI_CR1_CPHA |
66 .cr2 = SPI_CR2_8BIT_MODE
72#if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
79#ifdef LIS2DW12_USE_I2C
82 .accsensitivity = NULL,
84 .accodr = LIS2DW12_ACC_ODR_25HZ,
85 .accoutputresolution = LIS2DW12_ACC_OR_HP,
86 .acclowpowermode = LIS2DW12_ACC_LP_MODE2,
87 .accbadwidthselect = LIS2DW12_ACC_BW_ODR4,
88 .accfullscale = LIS2DW12_ACC_FS_4G,
96#if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
103 .accsensitivity = NULL,
105 .accfullscale = LSM303AGR_ACC_FS_4G,
106 .accodr = LSM303AGR_ACC_ODR_50Hz,
107#if LSM303AGR_USE_ADVANCED
108 .accmode = LSM303AGR_ACC_MODE_HRES,
109 .accblockdataupdate = LSM303AGR_ACC_BDU_CONT,
110 .accendianess = LSM303AGR_ACC_END_LITTLE,
113 .compsensitivity = NULL,
115 .compodr = LSM303AGR_COMP_ODR_50HZ,
116#if LSM303AGR_USE_ADVANCED
117 .compmode = LSM303AGR_COMP_MODE_NORM,
118 .complp = LSM303AGR_COMP_LPOW_EN
127#if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
136 .accsensitivity = NULL,
138 .accfullscale = LIS302DL_ACC_FS_8G,
139 .accodr = LIS302DL_ACC_ODR_100HZ,
140#if LIS302DL_USE_ADVANCED
141 .acchighpass = LIS302DL_ACC_HP_0,
149#if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
156 .accsensitivity = NULL,
158 .accfullscale = LIS3DSH_ACC_FS_4G,
159 .accodr = LIS3DSH_ACC_ODR_50HZ,
160#if LIS3DSH_USE_ADVANCED
161 .accantialiasing = LIS3DSH_ACC_BW_50HZ,
162 .accblockdataupdate = LIS3DSH_ACC_BDU_CONTINUOUS,
187 msg_t ret = MSG_RESET;
190 #if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
192 ret = lis2dw12AccelerometerReadCooked(&
LIS2DW12, acccooked);
195 #if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
197 ret = lsm303agrAccelerometerReadCooked(&
LIS2DH12, acccooked);
200 #if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
202 ret = lis302dlAccelerometerReadCooked(&
LIS302DL, acccooked);
205 #if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
207 ret = lis3dshAccelerometerReadCooked(&
LIS3DSH, acccooked);
224 static SPIDriver *bus;
225 msg_t ret = MSG_RESET;
231 if (bus ==
nullptr) {
246#if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
260#if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
274#if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
288#if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
307 efiPrintf(
"accelerometer init OK");
309 efiPrintf(
"accelerometer init failed %d", (
int)ret);
static LIS2DW12Driver LIS2DW12
static LIS3DSHConfig lis3dshcfg
OutputPin accelerometerChipSelect
static LIS2DW12Config lis2dw12cfg
static AccelController instance
static LIS3DSHDriver LIS3DSH
static LIS302DLDriver LIS302DL
static SPIConfig accelerometerSpiCfg
static LSM303AGRDriver LIS2DH12
static AccelType_t AccelType
static LIS302DLConfig lis302dlcfg
static LSM303AGRConfig lis2dh12cfg
Single output pin reference and state.
void initPin(const char *msg, brain_pin_e brainPin, pin_output_mode_e outputMode, bool forceInitWithFatalError=false)
bool isInitialized() const
Base class for a controller that needs to run periodically to perform work.
virtual void PeriodicTask(efitick_t nowNt)=0
Called periodically. Override this method to do work for your controller.
ioportid_t getHwPort(const char *msg, brain_pin_e brainPin)
ioportmask_t getHwPin(const char *msg, brain_pin_e brainPin)
static EngineAccessor engine
static constexpr engine_configuration_s * engineConfiguration
SPIDriver * getSpiDevice(spi_device_e spiDevice)
UNUSED(samplingTimeSeconds)
bool isBrainPinValid(brain_pin_e brainPin)
Accelerometer accelerometer
spi_device_e accelerometerSpiDevice