29 #if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
32 #if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
33 #include "lsm303agr.h"
35 #if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
38 #if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
47 #if SPI_SUPPORTS_CIRCULAR == TRUE
54 .cr1 = SPI_CR1_BR_0 | SPI_CR1_BR_1 | SPI_CR1_CPOL | SPI_CR1_CPHA |
56 .cr2 = SPI_CR2_8BIT_MODE
61 #if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
68 #ifdef LIS2DW12_USE_I2C
71 .accsensitivity = NULL,
73 .accoutputdatarate = LIS2DW12_ACC_ODR_25HZ,
74 .accoutputresolution = LIS2DW12_ACC_OR_HP,
75 .acclowpowermode = LIS2DW12_ACC_LP_MODE2,
76 .accbadwidthselect = LIS2DW12_ACC_BW_ODR4,
77 .accfullscale = LIS2DW12_ACC_FS_4G,
85 #if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
92 .accsensitivity = NULL,
94 .accfullscale = LSM303AGR_ACC_FS_4G,
95 .accoutdatarate = LSM303AGR_ACC_ODR_50Hz,
96 #if LSM303AGR_USE_ADVANCED
97 .accmode = LSM303AGR_ACC_MODE_HRES,
98 .accblockdataupdate = LSM303AGR_ACC_BDU_CONT,
99 .accendianess = LSM303AGR_ACC_END_LITTLE,
102 .compsensitivity = NULL,
104 .compoutputdatarate = LSM303AGR_COMP_ODR_50HZ,
105 #if LSM303AGR_USE_ADVANCED
106 .compmode = LSM303AGR_COMP_MODE_NORM,
107 .complp = LSM303AGR_COMP_LPOW_EN
116 #if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
125 .accsensitivity = NULL,
127 .accfullscale = LIS302DL_ACC_FS_8G,
128 .accoutputdatarate = LIS302DL_ACC_ODR_100HZ,
129 #if LIS302DL_USE_ADVANCED
130 .acchighpass = LIS302DL_ACC_HP_0,
138 #if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
145 .accsensitivity = NULL,
147 .accfullscale = LIS3DSH_ACC_FS_4G,
148 .accoutputdatarate = LIS3DSH_ACC_ODR_50HZ,
149 #if LIS3DSH_USE_ADVANCED
150 .accantialiasing = LIS3DSH_ACC_BW_50HZ,
151 .accblockdataupdate = LIS3DSH_ACC_BDU_CONTINUOUS,
174 msg_t ret = MSG_RESET;
177 #if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
179 ret = lis2dw12AccelerometerReadCooked(&
LIS2DW12, acccooked);
182 #if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
184 ret = lsm303agrAccelerometerReadCooked(&
LIS2DH12, acccooked);
187 #if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
189 ret = lis302dlAccelerometerReadCooked(&
LIS302DL, acccooked);
192 #if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
194 ret = lis3dshAccelerometerReadCooked(&
LIS3DSH, acccooked);
211 static SPIDriver *bus;
212 msg_t ret = MSG_RESET;
218 if (bus ==
nullptr) {
233 #if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
247 #if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
261 #if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
275 #if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
294 efiPrintf(
"accelerometer init OK");
296 efiPrintf(
"accelerometer init failed %d", 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.
PeriodicController(const char *name, tprio_t priority, float frequencyHz)
ioportid_t getHwPort(const char *msg, brain_pin_e brainPin)
ioportmask_t getHwPin(const char *msg, brain_pin_e brainPin)
SPIDriver * getSpiDevice(spi_device_e spiDevice)
engine_configuration_s * engineConfiguration
bool isBrainPinValid(brain_pin_e brainPin)
Accelerometer accelerometer
spi_device_e accelerometerSpiDevice