Ejemplo n.º 1
0
/**
 * @brief Write the data to register
 * @param handle the device handle
 * @param reg register address
 * @param data register data
 * @retval COMPONENT_OK in case of success
 * @retval COMPONENT_ERROR in case of failure
 */
static DrvStatusTypeDef LIS3MDL_Write_Reg( DrvContextTypeDef *handle, uint8_t reg, uint8_t data )
{

  if ( LIS3MDL_MAG_WriteReg( (void *)handle, reg, &data, 1 ) == MEMS_ERROR )
  {
    return COMPONENT_ERROR;
  }

  return COMPONENT_OK;
}
Ejemplo n.º 2
0
/*******************************************************************************
* Function Name  : status_t LIS3MDL_MAG_Set_MagneticThreshold(u8_t *buff)
* Description    : Set MagneticThreshold data row
* Input          : pointer to [u8_t]
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t LIS3MDL_MAG_Set_MagneticThreshold(void *handle, u8_t *buff)
{
  u8_t  i;
  
  for (i = 0; i < 2; i++ )
  {
    if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_INT_THS_L + i,  buff[i]) )
      return MEMS_ERROR;
  }
  return MEMS_SUCCESS;
}
Ejemplo n.º 3
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_InterruptOnX
* Description    : Write XIEN
* Input          : LIS3MDL_MAG_XIEN_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_InterruptOnX(void *handle, LIS3MDL_MAG_XIEN_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_INT_CFG, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_XIEN_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_INT_CFG, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 4
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_BlockDataUpdate
* Description    : Write BDU
* Input          : LIS3MDL_MAG_BDU_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_BlockDataUpdate(void *handle, LIS3MDL_MAG_BDU_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_CTRL_REG5, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_BDU_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_CTRL_REG5, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 5
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_OperatingModeZ
* Description    : Write OMZ
* Input          : LIS3MDL_MAG_OMZ_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_OperatingModeZ(void *handle, LIS3MDL_MAG_OMZ_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_CTRL_REG4, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_OMZ_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_CTRL_REG4, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 6
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_LittleBigEndianInversion
* Description    : Write BLE
* Input          : LIS3MDL_MAG_BLE_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_LittleBigEndianInversion(void *handle, LIS3MDL_MAG_BLE_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_CTRL_REG4, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_BLE_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_CTRL_REG4, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 7
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_FastLowPowerXYZ
* Description    : Write LP
* Input          : LIS3MDL_MAG_LP_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_FastLowPowerXYZ(void *handle, LIS3MDL_MAG_LP_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_CTRL_REG3, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_LP_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_CTRL_REG3, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 8
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_SerialInterfaceMode
* Description    : Write SIM
* Input          : LIS3MDL_MAG_SIM_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_SerialInterfaceMode(void *handle, LIS3MDL_MAG_SIM_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_CTRL_REG3, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_SIM_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_CTRL_REG3, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 9
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_FullScale
* Description    : Write FS
* Input          : LIS3MDL_MAG_FS_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_FullScale(void *handle, LIS3MDL_MAG_FS_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_CTRL_REG2, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_FS_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_CTRL_REG2, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 10
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_SoftRST
* Description    : Write SOFT_RST
* Input          : LIS3MDL_MAG_SOFT_RST_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_SoftRST(void *handle, LIS3MDL_MAG_SOFT_RST_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_CTRL_REG2, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_SOFT_RST_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_CTRL_REG2, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 11
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_TemperatureSensor
* Description    : Write TEMP_EN
* Input          : LIS3MDL_MAG_TEMP_EN_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_TemperatureSensor(void *handle, LIS3MDL_MAG_TEMP_EN_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_CTRL_REG1, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_TEMP_EN_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_CTRL_REG1, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 12
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_OutputDataRate
* Description    : Write DO
* Input          : LIS3MDL_MAG_DO_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_OutputDataRate(void *handle, LIS3MDL_MAG_DO_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_CTRL_REG1, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_DO_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_CTRL_REG1, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 13
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_PositiveThresholdFlagX
* Description    : Write PTH_X
* Input          : LIS3MDL_MAG_PTH_X_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_PositiveThresholdFlagX(void *handle, LIS3MDL_MAG_PTH_X_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_INT_SRC, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_PTH_X_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_INT_SRC, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}
Ejemplo n.º 14
0
/*******************************************************************************
* Function Name  : LIS3MDL_MAG_W_MagneticFieldOverflow
* Description    : Write MROI
* Input          : LIS3MDL_MAG_MROI_t
* Output         : None
* Return         : Status [MEMS_ERROR, MEMS_SUCCESS]
*******************************************************************************/
status_t  LIS3MDL_MAG_W_MagneticFieldOverflow(void *handle, LIS3MDL_MAG_MROI_t newValue)
{
  u8_t value;
  
  if( !LIS3MDL_MAG_ReadReg(handle, LIS3MDL_MAG_INT_SRC, &value) )
    return MEMS_ERROR;
    
  value &= ~LIS3MDL_MAG_MROI_MASK;
  value |= newValue;
  
  if( !LIS3MDL_MAG_WriteReg(handle, LIS3MDL_MAG_INT_SRC, value) )
    return MEMS_ERROR;
    
  return MEMS_SUCCESS;
}