49#if (LIS3MDL_USE_I2C) || defined(__DOXYGEN__) 
   63                             uint8_t* rxbuf, 
size_t n) {
 
 
  136                "comp_read_raw(), invalid state");
 
  138                "comp_read_raw(), channel not ready");
 
  140#if LIS3MDL_SHARED_I2C 
  143           devp->config->i2ccfg);
 
  149#if LIS3MDL_SHARED_I2C 
  155      tmp = buff[2 * i] + (buff[2 * i + 1] << 8);
 
  156      axes[i] = (int32_t)tmp;
 
 
  191                "comp_read_cooked(), invalid state");
 
  195    axes[i] = (raw[i] * devp->compsensitivity[i]) - devp->compbias[i];
 
 
  223                "comp_set_bias(), invalid state");
 
  226    devp->compbias[i] = bp[i];
 
 
  252                "comp_reset_bias(), invalid state");
 
 
  282                "comp_set_sensivity(), invalid state");
 
  285    devp->compsensitivity[i] = sp[i];
 
 
  311                "comp_reset_sensivity(), invalid state");
 
 
  353                "comp_set_full_scale(), invalid state");
 
  355                "comp_set_full_scale(), channel not ready");
 
  379     (newfs != devp->compfullscale)) {
 
  381    scale = newfs / devp->compfullscale;
 
  382    devp->compfullscale = newfs;
 
  384#if LIS3MDL_SHARED_I2C 
  386    i2cStart(devp->config->i2cp, devp->config->i2ccfg);
 
  393#if LIS3MDL_SHARED_I2C 
  403#if LIS3MDL_SHARED_I2C 
  405      i2cStart(devp->config->i2cp, devp->config->i2ccfg);
 
  409                                    devp->config->slaveaddress,
 
  412#if LIS3MDL_SHARED_I2C 
  420        devp->compsensitivity[i] *= scale;
 
  421        devp->compbias[i] *= scale;
 
 
  475              "lis3mdlStart(), invalid state");
 
  477  devp->config = config;
 
  482    cr[1] = devp->config->compodr;
 
  483#if LIS3MDL_USE_ADVANCED || defined(__DOXYGEN__) 
  484    cr[1] |= devp->config->compopmodexy;
 
  492    cr[2] = devp->config->compfullscale;
 
  498#if LIS3MDL_USE_ADVANCED || defined(__DOXYGEN__) 
  499    cr[3] = devp->config->compconvmode;
 
  506#if LIS3MDL_USE_ADVANCED || defined(__DOXYGEN__) 
  507    cr[4] = devp->config->compopmodez | devp->config->endianness;
 
  514#if LIS3MDL_USE_ADVANCED || defined(__DOXYGEN__) 
  515    cr[5] = devp->config->bdu;
 
  520#if LIS3MDL_SHARED_I2C 
  529#if LIS3MDL_SHARED_I2C 
  537      if(devp->config->compsensitivity == NULL) {
 
  541        devp->compsensitivity[i] = devp->config->compsensitivity[i];
 
  548      if(devp->config->compsensitivity == NULL) {
 
  552        devp->compsensitivity[i] = devp->config->compsensitivity[i];
 
  559      if(devp->config->compsensitivity == NULL) {
 
  563        devp->compsensitivity[i] = devp->config->compsensitivity[i];
 
  570      if(devp->config->compsensitivity == NULL) {
 
  574        devp->compsensitivity[i] = devp->config->compsensitivity[i];
 
  582  if(devp->config->compbias != NULL)
 
  584      devp->compbias[i] = devp->config->compbias[i];
 
 
  607                "lis3mdlStop(), invalid state");
 
  611#if LIS3MDL_SHARED_I2C 
  614             (devp)->config->i2ccfg);
 
  624#if LIS3MDL_SHARED_I2C 
 
static const struct ADXL317VMT vmt_device
 
#define objGetInstance(type, ip)
Returns the instance pointer starting from an interface pointer.
 
msg_t i2cStart(I2CDriver *i2cp, const I2CConfig *config)
Configures and activates the I2C peripheral.
 
msg_t i2cMasterTransmitTimeout(I2CDriver *i2cp, i2caddr_t addr, const uint8_t *txbuf, size_t txbytes, uint8_t *rxbuf, size_t rxbytes, sysinterval_t timeout)
Sends data via the I2C bus.
 
void i2cReleaseBus(I2CDriver *i2cp)
Releases exclusive access to the I2C bus.
 
void i2cStop(I2CDriver *i2cp)
Deactivates the I2C peripheral.
 
void i2cAcquireBus(I2CDriver *i2cp)
Gains exclusive access to the I2C bus.
 
struct hal_i2c_driver I2CDriver
Type of a structure representing an I2C driver.
 
void lis3mdlStart(LIS3MDLDriver *devp, const LIS3MDLConfig *config)
Configures and activates LIS3MDL Complex Driver peripheral.
 
msg_t lis3mdlI2CWriteRegister(I2CDriver *i2cp, lis3mdl_sad_t sad, uint8_t *txbuf, uint8_t n)
Writes a value into a register using I2C.
 
#define LIS3MDL_COMP_SENS_4GA
 
static size_t comp_get_axes_number(void *ip)
Return the number of axes of the BaseCompass.
 
static msg_t comp_set_full_scale(LIS3MDLDriver *devp, lis3mdl_comp_fs_t fs)
Changes the LIS3MDLDriver compass fullscale value.
 
static msg_t comp_set_sensivity(void *ip, float *sp)
Set sensitivity values for the BaseCompass.
 
#define LIS3MDL_CTRL_REG3_MD1
 
static msg_t comp_reset_bias(void *ip)
Reset bias values for the BaseCompass.
 
#define LIS3MDL_COMP_SENS_12GA
 
#define LIS3MDL_CTRL_REG1_OM1
 
static msg_t comp_set_bias(void *ip, float *bp)
Set bias values for the BaseCompass.
 
#define LIS3MDL_COMP_16GA
 
static msg_t comp_reset_sensivity(void *ip)
Reset sensitivity values for the BaseCompass.
 
#define LIS3MDL_AD_OUT_X_L
 
static msg_t comp_read_cooked(void *ip, float axes[])
Retrieves cooked data from the BaseCompass.
 
#define LIS3MDL_COMP_SENS_16GA
 
void lis3mdlObjectInit(LIS3MDLDriver *devp)
Initializes an instance.
 
#define LIS3MDL_CTRL_REG2_FS_MASK
 
void lis3mdlStop(LIS3MDLDriver *devp)
Deactivates the LIS3MDL Complex Driver peripheral.
 
#define LIS3MDL_AD_CTRL_REG2
 
#define LIS3MDL_AD_CTRL_REG3
 
lis3mdl_comp_fs_t
LIS3MDL full scale.
 
msg_t lis3mdlI2CReadRegister(I2CDriver *i2cp, lis3mdl_sad_t sad, uint8_t reg, uint8_t *rxbuf, size_t n)
Reads registers value using I2C.
 
#define LIS3MDL_CTRL_REG1_OM0
 
#define LIS3MDL_AD_CTRL_REG1
 
#define LIS3MDL_COMP_12GA
 
lis3mdl_sad_t
LIS3MDL slave address.
 
#define LIS3MDL_CTRL_REG3_MD0
 
static const struct BaseCompassVMT vmt_compass
 
#define LIS3MDL_COMP_BIAS
 
#define LIS3MDL_COMP_NUMBER_OF_AXES
LIS3MDL compass subsystem characteristics.
 
static msg_t comp_read_raw(void *ip, int32_t axes[])
Retrieves raw data from the BaseCompass.
 
#define LIS3MDL_COMP_SENS_8GA
 
#define osalDbgAssert(c, remark)
Condition assertion.
 
#define osalDbgCheck(c)
Function parameters check.
 
#define osalThreadSleepMilliseconds(msecs)
Delays the invoking thread for the specified number of milliseconds.
 
#define FALSE
Generic 'false' preprocessor boolean constant.
 
#define MSG_OK
Normal wakeup message.
 
#define MSG_RESET
Wakeup caused by a reset condition.
 
#define TIME_INFINITE
Infinite interval specification for all functions with a timeout specification.
 
LIS3MDL MEMS interface module header.
 
const struct BaseCompassVMT * vmt
Virtual Methods Table.
 
BaseCompass virtual methods table.
 
LIS3MDL configuration structure.
 
I2CDriver * i2cp
I2C driver associated to this LIS3MDL.
 
LIS3MDL 3-axis compass class.
 
const struct LIS3MDLVMT * vmt
Virtual Methods Table.
 
BaseCompass comp_if
Base compass interface.
 
LIS3MDL virtual methods table.
 
const I2CConfig * config
Current configuration data.