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_
60 .cr1 = SPI_CR1_BR_0 | SPI_CR1_BR_1 | SPI_CR1_CPOL | SPI_CR1_CPHA |
62 .cr2 = SPI_CR2_8BIT_MODE
67#if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
74#ifdef LIS2DW12_USE_I2C
77 .accsensitivity = NULL,
79 .accodr = LIS2DW12_ACC_ODR_25HZ,
80 .accoutputresolution = LIS2DW12_ACC_OR_HP,
81 .acclowpowermode = LIS2DW12_ACC_LP_MODE2,
82 .accbadwidthselect = LIS2DW12_ACC_BW_ODR4,
83 .accfullscale = LIS2DW12_ACC_FS_4G,
91#if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
98 .accsensitivity = NULL,
100 .accfullscale = LSM303AGR_ACC_FS_4G,
101 .accodr = LSM303AGR_ACC_ODR_50Hz,
102#if LSM303AGR_USE_ADVANCED
103 .accmode = LSM303AGR_ACC_MODE_HRES,
104 .accblockdataupdate = LSM303AGR_ACC_BDU_CONT,
105 .accendianess = LSM303AGR_ACC_END_LITTLE,
108 .compsensitivity = NULL,
110 .compodr = LSM303AGR_COMP_ODR_50HZ,
111#if LSM303AGR_USE_ADVANCED
112 .compmode = LSM303AGR_COMP_MODE_NORM,
113 .complp = LSM303AGR_COMP_LPOW_EN
122#if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
131 .accsensitivity = NULL,
133 .accfullscale = LIS302DL_ACC_FS_8G,
134 .accodr = LIS302DL_ACC_ODR_100HZ,
135#if LIS302DL_USE_ADVANCED
136 .acchighpass = LIS302DL_ACC_HP_0,
144#if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
151 .accsensitivity = NULL,
153 .accfullscale = LIS3DSH_ACC_FS_4G,
154 .accodr = LIS3DSH_ACC_ODR_50HZ,
155#if LIS3DSH_USE_ADVANCED
156 .accantialiasing = LIS3DSH_ACC_BW_50HZ,
157 .accblockdataupdate = LIS3DSH_ACC_BDU_CONTINUOUS,
182 msg_t ret = MSG_RESET;
185 #if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
187 ret = lis2dw12AccelerometerReadCooked(&
LIS2DW12, acccooked);
190 #if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
192 ret = lsm303agrAccelerometerReadCooked(&
LIS2DH12, acccooked);
195 #if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
197 ret = lis302dlAccelerometerReadCooked(&
LIS302DL, acccooked);
200 #if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
202 ret = lis3dshAccelerometerReadCooked(&
LIS3DSH, acccooked);
219 static SPIDriver *bus;
220 msg_t ret = MSG_RESET;
226 if (bus ==
nullptr) {
241#if (EFI_ONBOARD_MEMS_LIS2DW12 == TRUE)
255#if (EFI_ONBOARD_MEMS_LIS2DH12 == TRUE)
269#if (EFI_ONBOARD_MEMS_LIS302DL == TRUE)
283#if (EFI_ONBOARD_MEMS_LIS3DSH == TRUE)
302 efiPrintf(
"accelerometer init OK");
304 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