55 if ((pSensorHandle == NULL) || (pBus == NULL))
66 if ((ARM_DRIVER_OK != status) || (whoAmi != reg))
92 if ((pSensorHandle == NULL) || (pRegWriteList == NULL))
106 if (ARM_DRIVER_OK != status)
114 if (ARM_DRIVER_OK != status)
122 if (ARM_DRIVER_OK != status)
137 if ((pSensorHandle == NULL) || (pReadList == NULL) || (pBuffer == NULL))
151 if (ARM_DRIVER_OK != status)
163 if (pSensorHandle == NULL)
177 if (ARM_DRIVER_OK != status)
192 static int16_t xOffsetMax = 0x8000, yOffsetMax = 0x8000, zOffsetMax = 0x8000,
193 xOffsetMin = 0x7FFF, yOffsetMin = 0x7FFF, zOffsetMin = 0x7FFF;
195 xOffsetMax = (*xValue > xOffsetMax)?(*xValue):(xOffsetMax);
196 xOffsetMin = (*xValue < xOffsetMin)?(*xValue):(xOffsetMin);
198 yOffsetMax = (*yValue > yOffsetMax)?(*yValue):(yOffsetMax);
199 yOffsetMin = (*yValue < yOffsetMin)?(*yValue):(yOffsetMin);
201 zOffsetMax = (*zValue > zOffsetMax)?(*zValue):(zOffsetMax);
202 zOffsetMin = (*zValue < zOffsetMin)?(*zValue):(zOffsetMin);
204 *xValue -= (xOffsetMax+xOffsetMin)/2;
205 *yValue -= (yOffsetMax+yOffsetMin)/2;
206 *zValue -= (zOffsetMax+zOffsetMin)/2;
int32_t MAG3110_I2C_Initialize(mag3110_i2c_sensorhandle_t *pSensorHandle, ARM_DRIVER_I2C *pBus, uint8_t index, uint16_t sAddress, uint8_t whoAmi)
The interface function to initialize the sensor.
registeridlefunction_t idleFunction
#define MAG3110_CTRL_REG1_AC_STANDBY
#define MAG3110_CTRL_REG2_MAG_RST_EN
int32_t MAG3110_I2C_Configure(mag3110_i2c_sensorhandle_t *pSensorHandle, const registerwritelist_t *pRegWriteList)
The interface function to configure he sensor.
The mag3110_drv.h file describes the MAG3110 driver interface and structures.
This defines the sensor specific information.
#define MAG3110_CTRL_REG1_AC_ACTIVE
ARM_DRIVER_I2C * pCommDrv
int32_t Sensor_I2C_Read(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, const registerreadlist_t *pReadList, uint8_t *pOutBuffer)
Read register data from a sensor.
void(* registeridlefunction_t)(void *userParam)
This is the register idle function type.
#define MAG3110_CTRL_REG1_AC_MASK
void MAG3110_I2C_SetIdleTask(mag3110_i2c_sensorhandle_t *pSensorHandle, registeridlefunction_t idleTask, void *userParam)
: The interface function to set the I2C Idle Task.
void MAG3110_CalibrateHardIronOffset(int16_t *xValue, int16_t *yValue, int16_t *zValue)
Calibrates the magnetometer reading by determining the current hard iron offset.
#define MAG3110_CTRL_REG2_MAG_RST_MASK
registerDeviceInfo_t deviceInfo
int32_t Register_I2C_Read(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, uint8_t offset, uint8_t length, uint8_t *pOutBuffer)
The interface function to read a sensor register.
int32_t Register_I2C_Write(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, uint8_t offset, uint8_t value, uint8_t mask, bool repeatedStart)
The interface function to write a sensor register.
This structure defines the Write command List.
This structure defines the Read command List.
int32_t MAG3110_I2C_ReadData(mag3110_i2c_sensorhandle_t *pSensorHandle, const registerreadlist_t *pReadList, uint8_t *pBuffer)
The interface function to read the sensor data.
int32_t MAG3110_I2C_DeInit(mag3110_i2c_sensorhandle_t *pSensorHandle)
The interface function to De Initialize sensor..
int32_t Sensor_I2C_Write(ARM_DRIVER_I2C *pCommDrv, registerDeviceInfo_t *devInfo, uint16_t slaveAddress, const registerwritelist_t *pRegWriteList)
Write register data to a sensor.