ISSDK  1.8
IoT Sensing Software Development Kit
Data Structures | Macros | Functions
fxas21002_drv.h File Reference

The fxas21002_drv.h file describes the fxas21002 driver interface and structures. More...

#include <stdint.h>
#include "fxas21002.h"
#include "sensor_io_i2c.h"
#include "sensor_io_spi.h"
#include "register_io_i2c.h"
#include "register_io_spi.h"
Include dependency graph for fxas21002_drv.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  fxas21002_spi_sensorhandle_t
 This defines the sensor specific information for SPI. More...
 
struct  fxas21002_i2c_sensorhandle_t
 This defines the sensor specific information for I2C. More...
 
struct  fxas21002_gyrodata_t
 This structure defines the fxas21002 raw data buffer. More...
 

Macros

#define FXAS21002_GYRO_DATA_SIZE   (0x06) /* Size of the accel data*/
 The size of the FXAS21002 gyro data. More...
 
#define FXAS21002_SPI_MAX_MSG_SIZE   (64)
 The MAX size of SPI message. More...
 
#define FXAS21002_SPI_CMD_LEN   (1)
 The size of the Sensor specific SPI Header. More...
 
#define FXAS21002_SS_ACTIVE_VALUE   SPI_SS_ACTIVE_LOW
 Is the Slave Select Pin Active Low or High. More...
 

Functions

int32_t FXAS21002_I2C_Initialize (fxas21002_i2c_sensorhandle_t *pSensorHandle, ARM_DRIVER_I2C *pBus, uint8_t index, uint16_t sAddress, uint8_t whoAmi)
 The interface function to initialize the sensor. More...
 
void FXAS21002_I2C_SetIdleTask (fxas21002_i2c_sensorhandle_t *pSensorHandle, registeridlefunction_t idleTask, void *userParam)
 : The interface function to set the I2C Idle Task. More...
 
int32_t FXAS21002_I2C_Configure (fxas21002_i2c_sensorhandle_t *pSensorHandle, const registerwritelist_t *pRegWriteList)
 The interface function to configure he sensor. More...
 
int32_t FXAS21002_I2C_ReadData (fxas21002_i2c_sensorhandle_t *pSensorHandle, const registerreadlist_t *pReadList, uint8_t *pBuffer)
 The interface function to read the sensor data. More...
 
int32_t FXAS21002_I2C_Deinit (fxas21002_i2c_sensorhandle_t *pSensorHandle)
 The interface function to De Initialize sensor.. More...
 
int32_t FXAS21002_SPI_Initialize (fxas21002_spi_sensorhandle_t *pSensorHandle, ARM_DRIVER_SPI *pBus, uint8_t index, void *pSlaveSelect, uint8_t whoAmi)
 The interface function to initialize the sensor. More...
 
void FXAS21002_SPI_SetIdleTask (fxas21002_spi_sensorhandle_t *pSensorHandle, registeridlefunction_t idleTask, void *userParam)
 : The interface function to set the SPI Idle Task. More...
 
int32_t FXAS21002_SPI_Configure (fxas21002_spi_sensorhandle_t *pSensorHandle, const registerwritelist_t *pRegWriteList)
 The interface function to configure he sensor. More...
 
int32_t FXAS21002_SPI_ReadData (fxas21002_spi_sensorhandle_t *pSensorHandle, const registerreadlist_t *pReadList, uint8_t *pBuffer)
 The interface function to read the sensor data. More...
 
int32_t FXAS21002_SPI_Deinit (fxas21002_spi_sensorhandle_t *pSensorHandle)
 The interface function to De Initialize sensor.. More...
 
void FXAS21002_SPI_ReadPreprocess (void *pCmdOut, uint32_t offset, uint32_t size)
 The SPI Read Pre-Process function to generate Sensor specific SPI Message Header. More...
 
void FXAS21002_SPI_WritePreprocess (void *pCmdOut, uint32_t offset, uint32_t size, void *pWritebuffer)
 The SPI Write Pre-Process function to generate Sensor specific SPI Message Header. More...
 

Detailed Description

The fxas21002_drv.h file describes the fxas21002 driver interface and structures.

Definition in file fxas21002_drv.h.

Macro Definition Documentation

◆ FXAS21002_GYRO_DATA_SIZE

#define FXAS21002_GYRO_DATA_SIZE   (0x06) /* Size of the accel data*/

The size of the FXAS21002 gyro data.

Definition at line 61 of file fxas21002_drv.h.

Referenced by main().

◆ FXAS21002_SPI_CMD_LEN

#define FXAS21002_SPI_CMD_LEN   (1)

The size of the Sensor specific SPI Header.

Definition at line 69 of file fxas21002_drv.h.

Referenced by FXAS21002_SPI_Initialize(), FXAS21002_SPI_ReadPreprocess(), and FXAS21002_SPI_WritePreprocess().

◆ FXAS21002_SPI_MAX_MSG_SIZE

#define FXAS21002_SPI_MAX_MSG_SIZE   (64)

The MAX size of SPI message.

Definition at line 65 of file fxas21002_drv.h.

◆ FXAS21002_SS_ACTIVE_VALUE

#define FXAS21002_SS_ACTIVE_VALUE   SPI_SS_ACTIVE_LOW

Is the Slave Select Pin Active Low or High.

Definition at line 73 of file fxas21002_drv.h.

Referenced by FXAS21002_SPI_Initialize().

Function Documentation

◆ FXAS21002_I2C_Configure()

int32_t FXAS21002_I2C_Configure ( fxas21002_i2c_sensorhandle_t pSensorHandle,
const registerwritelist_t pRegWriteList 
)

The interface function to configure he sensor.

This function configure the sensor with requested ODR, Range and registers in the regsiter pair array.

Parameters
[in]pSensorHandlehandle to the sensor.
[in]pRegWriteListpointer to the register list.
Constraints:
This can be called any number of times only after FXAS21002_I2C_Initialize(). Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
FXAS21002_I2C_Configure() returns the status .

Validate for the correct handle and register write list.

Check whether sensor handle is initialized before applying configuration.

Put the device into standby mode so that configuration can be applied.

Apply the Sensor Configuration based on the Register Write List

Put the device into active mode and ready for reading data.

Definition at line 267 of file fxas21002_drv.c.

References fxas21002_i2c_sensorhandle_t::deviceInfo, FXAS21002_CTRL_REG1, FXAS21002_CTRL_REG1_MODE_ACTIVE, FXAS21002_CTRL_REG1_MODE_MASK, FXAS21002_CTRL_REG1_MODE_STANDBY, int32_t(), fxas21002_i2c_sensorhandle_t::isInitialized, fxas21002_i2c_sensorhandle_t::pCommDrv, Register_I2C_Write(), SENSOR_ERROR_INIT, SENSOR_ERROR_INVALID_PARAM, SENSOR_ERROR_NONE, SENSOR_ERROR_WRITE, Sensor_I2C_Write(), fxas21002_i2c_sensorhandle_t::slaveAddress, and status.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FXAS21002_I2C_Deinit()

int32_t FXAS21002_I2C_Deinit ( fxas21002_i2c_sensorhandle_t pSensorHandle)

The interface function to De Initialize sensor..

This function made sensor in a power safe state and de initialize its handle.

Parameters
[in]pSensorHandlehandle to the sensor.
Constraints:
This can be called only after FXAS21002_I2C_Initialize(). Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
FXAS21002_I2C_Deinit() returns the status .

Check whether sensor handle is initialized before triggering sensor reset.

Trigger sensor device reset.

De-initialize sensor handle.

Definition at line 341 of file fxas21002_drv.c.

References fxas21002_i2c_sensorhandle_t::deviceInfo, FXAS21002_CTRL_REG1, FXAS21002_CTRL_REG1_RST_MASK, FXAS21002_CTRL_REG1_RST_TRIGGER, int32_t(), fxas21002_i2c_sensorhandle_t::isInitialized, fxas21002_i2c_sensorhandle_t::pCommDrv, Register_I2C_Write(), SENSOR_ERROR_INIT, SENSOR_ERROR_INVALID_PARAM, SENSOR_ERROR_NONE, SENSOR_ERROR_WRITE, fxas21002_i2c_sensorhandle_t::slaveAddress, and status.

Here is the call graph for this function:

◆ FXAS21002_I2C_Initialize()

int32_t FXAS21002_I2C_Initialize ( fxas21002_i2c_sensorhandle_t pSensorHandle,
ARM_DRIVER_I2C *  pBus,
uint8_t  index,
uint16_t  sAddress,
uint8_t  whoAmi 
)

The interface function to initialize the sensor.

This function initialize the sensor and sensor handle.

Parameters
[in]pSensorHandlehandle to the sensor.
[in]pBuspointer to the CMSIS API compatible I2C bus object.
[in]indexthe I2C device number.
[in]sAddressslave address of the device on the bus.
[in]whoamiWHO_AM_I value of the device.
Constraints:
This should be the first API to be called. Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
FXAS21002_I2C_Initialize() returns the status .

Check the input parameters.

Read and store the device's WHO_AM_I.

Initialize the sensor handle.

Definition at line 228 of file fxas21002_drv.c.

References fxas21002_i2c_sensorhandle_t::deviceInfo, registerDeviceInfo_t::deviceInstance, registerDeviceInfo_t::functionParam, FXAS21002_WHO_AM_I, registerDeviceInfo_t::idleFunction, int32_t(), fxas21002_i2c_sensorhandle_t::isInitialized, fxas21002_i2c_sensorhandle_t::pCommDrv, Register_I2C_Read(), SENSOR_ERROR_INIT, SENSOR_ERROR_INVALID_PARAM, SENSOR_ERROR_NONE, fxas21002_i2c_sensorhandle_t::slaveAddress, and status.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FXAS21002_I2C_ReadData()

int32_t FXAS21002_I2C_ReadData ( fxas21002_i2c_sensorhandle_t pSensorHandle,
const registerreadlist_t pReadList,
uint8_t *  pBuffer 
)

The interface function to read the sensor data.

This function read the sensor data out from the device and returns raw data in a byte stream.

Parameters
[in]pSensorHandlehandle to the sensor.
[in]pReadListpointer to the list of device registers and values to read.
[out]pBufferbuffer which holds raw sensor data.This buffer may be back to back databuffer based command read in the list.
Constraints:
This can be called any number of times only after FXAS21002_I2C_Initialize(). Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
FXAS21002_I2C_ReadData() returns the status .

Validate for the correct handle and register read list.

Check whether sensor handle is initialized before reading sensor data.

Parse through the read list and read the data one by one.

Definition at line 312 of file fxas21002_drv.c.

References fxas21002_i2c_sensorhandle_t::deviceInfo, int32_t(), fxas21002_i2c_sensorhandle_t::isInitialized, fxas21002_i2c_sensorhandle_t::pCommDrv, SENSOR_ERROR_INIT, SENSOR_ERROR_INVALID_PARAM, SENSOR_ERROR_NONE, SENSOR_ERROR_READ, Sensor_I2C_Read(), fxas21002_i2c_sensorhandle_t::slaveAddress, and status.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FXAS21002_I2C_SetIdleTask()

void FXAS21002_I2C_SetIdleTask ( fxas21002_i2c_sensorhandle_t pSensorHandle,
registeridlefunction_t  idleTask,
void *  userParam 
)

: The interface function to set the I2C Idle Task.

Parameters
[in]fxas21002_i2c_sensorhandle_t *pSensorHandle, handle to the sensor handle.
[in]registeridlefunction_t idleTask, function pointer to the function to execute on I2C Idle Time.
[in]void *userParam, the pointer to the user idle ftask parameters.
Returns
void.
Constraints:
This can be called any number of times only after FXAS21002_I2C_Initialize(). Application has to ensure that previous instances of these APIs have exited before invocation. No

Definition at line 259 of file fxas21002_drv.c.

References fxas21002_i2c_sensorhandle_t::deviceInfo, registerDeviceInfo_t::functionParam, and registerDeviceInfo_t::idleFunction.

Referenced by main().

Here is the caller graph for this function:

◆ FXAS21002_SPI_Configure()

int32_t FXAS21002_SPI_Configure ( fxas21002_spi_sensorhandle_t pSensorHandle,
const registerwritelist_t pRegWriteList 
)

The interface function to configure he sensor.

This function configure the sensor with requested ODR, Range and registers in the regsiter pair array.

Parameters
[in]pSensorHandlehandle to the sensor.
[in]pRegWriteListpointer to the register list.
Constraints:
This can be called any number of times only after FXAS21002_SPI_Initialize(). Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
FXAS21002_SPI_Configure() returns the status .

Validate for the correct handle and register write list.

Check whether sensor handle is initialized before applying configuration.

Put the device into standby mode so that configuration can be applied.

Apply the Sensor Configuration based on the Register Write List

Put the device into active mode and ready for reading data.

Definition at line 125 of file fxas21002_drv.c.

References fxas21002_spi_sensorhandle_t::deviceInfo, FXAS21002_CTRL_REG1, FXAS21002_CTRL_REG1_MODE_ACTIVE, FXAS21002_CTRL_REG1_MODE_MASK, FXAS21002_CTRL_REG1_MODE_STANDBY, int32_t(), fxas21002_spi_sensorhandle_t::isInitialized, fxas21002_spi_sensorhandle_t::pCommDrv, Register_SPI_Write(), SENSOR_ERROR_INIT, SENSOR_ERROR_INVALID_PARAM, SENSOR_ERROR_NONE, SENSOR_ERROR_WRITE, Sensor_SPI_Write(), fxas21002_spi_sensorhandle_t::slaveParams, and status.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FXAS21002_SPI_Deinit()

int32_t FXAS21002_SPI_Deinit ( fxas21002_spi_sensorhandle_t pSensorHandle)

The interface function to De Initialize sensor..

This function made sensor in a power safe state and de initialize its handle.

Parameters
[in]pSensorHandlehandle to the sensor.
Constraints:
This can be called only after after FXAS21002_SPI_Initialize(). Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
FXAS21002_SPI_Deinit() returns the status .

Check whether sensor handle is initialized before triggering sensor reset.

Trigger sensor device reset.

De-initialize sensor handle.

Definition at line 197 of file fxas21002_drv.c.

References fxas21002_spi_sensorhandle_t::deviceInfo, FXAS21002_CTRL_REG1, FXAS21002_CTRL_REG1_RST_MASK, FXAS21002_CTRL_REG1_RST_TRIGGER, int32_t(), fxas21002_spi_sensorhandle_t::isInitialized, fxas21002_spi_sensorhandle_t::pCommDrv, Register_SPI_Write(), SENSOR_ERROR_INIT, SENSOR_ERROR_INVALID_PARAM, SENSOR_ERROR_NONE, SENSOR_ERROR_WRITE, fxas21002_spi_sensorhandle_t::slaveParams, and status.

Here is the call graph for this function:

◆ FXAS21002_SPI_Initialize()

int32_t FXAS21002_SPI_Initialize ( fxas21002_spi_sensorhandle_t pSensorHandle,
ARM_DRIVER_SPI *  pBus,
uint8_t  index,
void *  pSlaveSelect,
uint8_t  whoAmi 
)

The interface function to initialize the sensor.

This function initializes the sensor and sensor handle.

Parameters
[in]pSensorHandlehandle to the sensor.
[in]pBuspointer to the CMSIS API compatible SPI bus object.
[in]indexthe I2C device number.
[in]pSlaveSelectslave select hndle of the device on the bus.
[in]whoamiWHO_AM_I value of the device.
Constraints:
This should be the first API to be called. Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
FXAS21002_SPI_Initialize() returns the status .

Check the input parameters.

Initialize the sensor handle.

Read and store the device's WHO_AM_I.

Definition at line 65 of file fxas21002_drv.c.

References GENERIC_DRIVER_GPIO::clr_pin, fxas21002_spi_sensorhandle_t::deviceInfo, registerDeviceInfo_t::deviceInstance, Driver_GPIO_KSDK, registerDeviceInfo_t::functionParam, FXAS21002_SPI_CMD_LEN, FXAS21002_SPI_ReadPreprocess(), FXAS21002_SPI_WritePreprocess(), FXAS21002_SS_ACTIVE_VALUE, FXAS21002_WHO_AM_I, GPIO_DIRECTION_OUT, registerDeviceInfo_t::idleFunction, int32_t(), fxas21002_spi_sensorhandle_t::isInitialized, fxas21002_spi_sensorhandle_t::pCommDrv, pGPIODriver, GENERIC_DRIVER_GPIO::pin_init, spiSlaveSpecificParams_t::pReadPreprocessFN, spiSlaveSpecificParams_t::pTargetSlavePinID, spiSlaveSpecificParams_t::pWritePreprocessFN, Register_SPI_Read(), SENSOR_ERROR_INIT, SENSOR_ERROR_INVALID_PARAM, SENSOR_ERROR_NONE, GENERIC_DRIVER_GPIO::set_pin, fxas21002_spi_sensorhandle_t::slaveParams, SPI_SS_ACTIVE_LOW, spiSlaveSpecificParams_t::spiCmdLen, spiSlaveSpecificParams_t::ssActiveValue, and status.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FXAS21002_SPI_ReadData()

int32_t FXAS21002_SPI_ReadData ( fxas21002_spi_sensorhandle_t pSensorHandle,
const registerreadlist_t pReadList,
uint8_t *  pBuffer 
)

The interface function to read the sensor data.

This function read the sensor data out from the device and returns raw data in a byte stream.

Parameters
[in]pSensorHandlehandle to the sensor.
[in]pReadListpointer to the list of device registers and values to read.
[out]pBufferbuffer which holds raw sensor data.This buffer may be back to back databuffer based command read in the list.
Constraints:
This can be called any number of times only after FXAS21002_SPI_Initialize(). Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
FXAS21002_SPI_ReadData() returns the status .

Validate for the correct handle and register read list.

Check whether sensor handle is initialized before reading sensor data.

Parse through the read list and read the data one by one.

Definition at line 168 of file fxas21002_drv.c.

References fxas21002_spi_sensorhandle_t::deviceInfo, int32_t(), fxas21002_spi_sensorhandle_t::isInitialized, fxas21002_spi_sensorhandle_t::pCommDrv, SENSOR_ERROR_INIT, SENSOR_ERROR_INVALID_PARAM, SENSOR_ERROR_NONE, SENSOR_ERROR_READ, Sensor_SPI_Read(), fxas21002_spi_sensorhandle_t::slaveParams, and status.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FXAS21002_SPI_ReadPreprocess()

void FXAS21002_SPI_ReadPreprocess ( void *  pCmdOut,
uint32_t  offset,
uint32_t  size 
)

The SPI Read Pre-Process function to generate Sensor specific SPI Message Header.

This function prepares the SPI Read Command Header with register address and R/W bit encoded as the Sensor.

Parameters
[out]pCmdOuthandle to the output buffer.
[in]offsetthe address of the register to start reading from.
[in]sizenumber of bytes to read.
Constraints:
None Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
:: None.

Definition at line 30 of file fxas21002_drv.c.

References FXAS21002_SPI_CMD_LEN, fxas21002_spiRead_CmdBuffer, fxas21002_spiRead_DataBuffer, spi_mater_SlaveCmd::pReadBuffer, spi_mater_SlaveCmd::pWriteBuffer, and spi_mater_SlaveCmd::size.

Referenced by FXAS21002_SPI_Initialize().

Here is the caller graph for this function:

◆ FXAS21002_SPI_SetIdleTask()

void FXAS21002_SPI_SetIdleTask ( fxas21002_spi_sensorhandle_t pSensorHandle,
registeridlefunction_t  idleTask,
void *  userParam 
)

: The interface function to set the SPI Idle Task.

Parameters
[in]fxas21002_spi_sensorhandle_t *pSensorHandle, handle to the sensor handle.
[in]registeridlefunction_t idleTask, function pointer to the function to execute on SPI Idle Time.
[in]void *userParam, the pointer to the user idle ftask parameters.
Returns
void.
Constraints:
This can be called any number of times only after FXAS21002_SPI_Initialize(). Application has to ensure that previous instances of these APIs have exited before invocation. No

Definition at line 117 of file fxas21002_drv.c.

References fxas21002_spi_sensorhandle_t::deviceInfo, registerDeviceInfo_t::functionParam, and registerDeviceInfo_t::idleFunction.

Referenced by main().

Here is the caller graph for this function:

◆ FXAS21002_SPI_WritePreprocess()

void FXAS21002_SPI_WritePreprocess ( void *  pCmdOut,
uint32_t  offset,
uint32_t  size,
void *  pWritebuffer 
)

The SPI Write Pre-Process function to generate Sensor specific SPI Message Header.

This function prepares the SPI Write Command Header with register address and R/W bit encoded as the Sensor.

Parameters
[out]pCmdOuthandle to the output buffer.
[in]offsetthe address of the register to start writing from.
[in]sizenumber of bytes to write.
Constraints:
None Application has to ensure that previous instances of these APIs have exited before invocation. No
Returns
:: None.

Definition at line 46 of file fxas21002_drv.c.

References FXAS21002_SPI_CMD_LEN, fxas21002_spiWrite_CmdDataBuffer, spi_mater_SlaveCmd::pReadBuffer, spi_mater_SlaveCmd::pWriteBuffer, and spi_mater_SlaveCmd::size.

Referenced by FXAS21002_SPI_Initialize().

Here is the caller graph for this function: