smartdof4  2.1.0.0
Data Structures | Macros | Typedefs | Enumerations | Functions
smartdof4.h File Reference

This file contains API for Smart DOF 4 Click Driver. More...

#include "drv_digital_out.h"
#include "drv_digital_in.h"
#include "drv_i2c_master.h"
#include "drv_spi_master.h"
#include "spi_specifics.h"

Go to the source code of this file.

Data Structures

struct  smartdof4_shtp_t
 Smart DOF 4 SHTP packet buffer object. More...
 
struct  smartdof4_s
 Smart DOF 4 Click context object. More...
 
struct  smartdof4_cfg_t
 Smart DOF 4 Click configuration object. More...
 
struct  smartdof4_feature_t
 Smart DOF 4 Click sensor feature object. More...
 
struct  smartdof4_axis_t
 Smart DOF 4 Click data axis object. More...
 
struct  smartdof4_pid_t
 Smart DOF 4 Click product ID object. More...
 

Macros

#define SMARTDOF4_CH_CMD   0
 Smart DOF 4 channel list. More...
 
#define SMARTDOF4_CH_EXE   1
 
#define SMARTDOF4_CH_CTRL   2
 
#define SMARTDOF4_CH_INPUT_REP   3
 
#define SMARTDOF4_CH_WAKE_REP   4
 
#define SMARTDOF4_CH_GYRO_VECTOR   5
 
#define SMARTDOF4_CMD_ERR   0x01
 Smart DOF 4 commands list. More...
 
#define SMARTDOF4_CMD_COUNT   0x02
 
#define SMARTDOF4_CMD_TARE   0x03
 
#define SMARTDOF4_CMD_INIT   0x04
 
#define SMARTDOF4_CMD_UNS_INIT   0x84
 
#define SMARTDOF4_CMD_SAVE_DCD   0x06
 
#define SMARTDOF4_CMD_ME_CALIB   0x07
 
#define SMARTDOF4_CMD_DCD_PERIOD_SAVE   0x09
 
#define SMARTDOF4_CMD_OSCIL   0x0A
 
#define SMARTDOF4_CMD_CLEAR_DCD   0x0B
 
#define SMARTDOF4_CMD_CALIB   0x0C
 
#define SMARTDOF4_CMD_BOOT   0x0D
 
#define SMARTDOF4_CMD_INTER_CALIB   0x0E
 
#define SMARTDOF4_CMD_INIT_SUB_REINIT   0x01
 Smart DOF 4 commands settings. More...
 
#define SMARTDOF4_CMD_INIT_STATUS_OK   0x00
 
#define SMARTDOF4_REP_ID_GET_FEAT_REQ   0xFE
 Smart DOF 4 report ID list. More...
 
#define SMARTDOF4_REP_ID_SET_FEAT_CMD   0xFD
 
#define SMARTDOF4_REP_ID_GET_FEAT_RESP   0xFC
 
#define SMARTDOF4_REP_ID_BASE_TIMESTAMP   0xFB
 
#define SMARTDOF4_REP_ID_TIMESTAMP_REBASE   0xFA
 
#define SMARTDOF4_REP_ID_PROD_ID_REQ   0xF9
 
#define SMARTDOF4_REP_ID_PROD_ID_RESP   0xF8
 
#define SMARTDOF4_REP_ID_FRS_WR_REQ   0xF7
 
#define SMARTDOF4_REP_ID_FRS_WR_DATA   0xF6
 
#define SMARTDOF4_REP_ID_FRS_WR_RESP   0xF5
 
#define SMARTDOF4_REP_ID_FRS_RD_REQ   0xF4
 
#define SMARTDOF4_REP_ID_FRS_RD_RESP   0xF3
 
#define SMARTDOF4_REP_ID_CMD_REQ   0xF2
 
#define SMARTDOF4_REP_ID_CMD_RESP   0xF1
 
#define SMARTDOF4_REP_ID_ACCEL   0x01
 
#define SMARTDOF4_REP_ID_GYRO   0x02
 
#define SMARTDOF4_REP_ID_MAGNET   0x03
 
#define SMARTDOF4_REP_ID_LINEAR_ACCEL   0x04
 
#define SMARTDOF4_REP_ID_ROT_VECTOR   0x05
 
#define SMARTDOF4_REP_ID_GRAVITY   0x06
 
#define SMARTDOF4_REP_ID_UNCALIB_GYRO   0x07
 
#define SMARTDOF4_REP_ID_GAME_ROT_VECTOR   0x08
 
#define SMARTDOF4_REP_ID_GEOMAG_ROT_VECTOR   0x09
 
#define SMARTDOF4_REP_ID_PRESSURE   0x0A
 
#define SMARTDOF4_REP_ID_AMB_LIGHT   0x0B
 
#define SMARTDOF4_REP_ID_HUMIDITY   0x0C
 
#define SMARTDOF4_REP_ID_PROXIMITY   0x0D
 
#define SMARTDOF4_REP_ID_TEMPERATURE   0x0E
 
#define SMARTDOF4_REP_ID_UNCALIB_MAG_FIELD   0x0F
 
#define SMARTDOF4_REP_ID_TAP_DETECT   0x10
 
#define SMARTDOF4_REP_ID_STEP_COUNT   0x11
 
#define SMARTDOF4_REP_ID_SIG_MOTION   0x12
 
#define SMARTDOF4_REP_ID_STABIL_CLASS   0x13
 
#define SMARTDOF4_REP_ID_RAW_ACCEL   0x14
 
#define SMARTDOF4_REP_ID_RAW_GYRO   0x15
 
#define SMARTDOF4_REP_ID_RAW_MAGNETO   0x16
 
#define SMARTDOF4_REP_ID_SAR   0x17
 
#define SMARTDOF4_REP_ID_STEP_DETECT   0x18
 
#define SMARTDOF4_REP_ID_SHAKE_DETECT   0x19
 
#define SMARTDOF4_REP_ID_FLIP_DETECT   0x1A
 
#define SMARTDOF4_REP_ID_PICKUP_DETECT   0x1B
 
#define SMARTDOF4_REP_ID_STABIL_DETECT   0x1C
 
#define SMARTDOF4_REP_ID_PERS_ACT_CLASS   0x1E
 
#define SMARTDOF4_REP_ID_SLEEP_DETECT   0x1F
 
#define SMARTDOF4_REP_ID_TILT_DETECT   0x20
 
#define SMARTDOF4_REP_ID_POCKET_DETECT   0x21
 
#define SMARTDOF4_REP_ID_CIRCLE_DETECT   0x22
 
#define SMARTDOF4_REP_ID_HEART_RATE_MONITOR   0x23
 
#define SMARTDOF4_REP_ID_ARVR_ROT_VECT   0x28
 
#define SMARTDOF4_REP_ID_ARVR_GAME_ROT_VECT   0x29
 
#define SMARTDOF4_REC_ID_STATIC_CALIB_AGM   0x7979
 Smart DOF 4 FRS record ID list. More...
 
#define SMARTDOF4_REC_ID_NOMINAL_CALIB_AGM   0x4D4D
 
#define SMARTDOF4_REC_ID_STATIC_CALIB_SRA   0x8A8A
 
#define SMARTDOF4_REC_ID_NOMINAL_CALIB_SRA   0x4E4E
 
#define SMARTDOF4_REC_ID_DYNAMIC_CALIB   0x1F1F
 
#define SMARTDOF4_REC_ID_MOTION_ENG_POW_MGMT   0xD3E2
 
#define SMARTDOF4_REC_ID_SYS_ORIENT   0x2D3E
 
#define SMARTDOF4_REC_ID_PRIM_ACCEL_ORIENT   0x2D41
 
#define SMARTDOF4_REC_ID_SCREEN_ROT_ACCEL_ORIENT   0x2D43
 
#define SMARTDOF4_REC_ID_GYRO_ORIENT   0x2D46
 
#define SMARTDOF4_REC_ID_MAGNETO_ORIENT   0x2D4C
 
#define SMARTDOF4_REC_ID_ARVR_ROT_VEC   0x3E2D
 
#define SMARTDOF4_REC_ID_ARVR_GAME_ROT_VEC   0x3E2E
 
#define SMARTDOF4_REC_ID_SIG_MOTION_DETECT_CFG   0xC274
 
#define SMARTDOF4_REC_ID_SHAKE_DETECT_CFG   0x7D7D
 
#define SMARTDOF4_REC_ID_MAX_FUSION_PERIOD   0xD7D7
 
#define SMARTDOF4_REC_ID_SERIAL_NUM   0x4B4B
 
#define SMARTDOF4_REC_ID_ENVIRO_SENS_PRESS   0x39AF
 
#define SMARTDOF4_REC_ID_ENVIRO_SENS_TEMP   0x4D20
 
#define SMARTDOF4_REC_ID_ENVIRO_SENS_HUMI   0x1AC9
 
#define SMARTDOF4_REC_ID_ENVIRO_SENS_AMBI   0x39B1
 
#define SMARTDOF4_REC_ID_ENVIRO_SENS_PROXI   0x4DA2
 
#define SMARTDOF4_REC_ID_ALS_CALIB   0xD401
 
#define SMARTDOF4_REC_ID_PROXI_SENS_CALIB   0xD402
 
#define SMARTDOF4_REC_ID_PICKUP_DETECT_CFG   0x1B2A
 
#define SMARTDOF4_REC_ID_FLIP_DETECT_CFG   0xFC94
 
#define SMARTDOF4_REC_ID_STAB_DETECT_CFG   0xED85
 
#define SMARTDOF4_REC_ID_ACT_TRACK_CFG   0xED88
 
#define SMARTDOF4_REC_ID_SLEEP_DETECT_CFG   0xED87
 
#define SMARTDOF4_REC_ID_TILT_DETECT_CFG   0xED89
 
#define SMARTDOF4_REC_ID_POCK_DETECT_CFG   0xEF27
 
#define SMARTDOF4_REC_ID_CIRC_DETECT_CFG   0xEE51
 
#define SMARTDOF4_REC_ID_USER_REC   0x74B4
 
#define SMARTDOF4_REC_ID_MOTION_ENG_TIME_SRC_SEL   0xD403
 
#define SMARTDOF4_REC_ID_UART_OUT_FORMAT_SEL   0xA1A1
 
#define SMARTDOF4_REC_ID_GYROINT_ROT_VEC_CFG   0xA1A2
 
#define SMARTDOF4_REC_ID_FUSION_CTRL_FLAGS   0xA1A3
 
#define SMARTDOF4_REC_ID_SIMPLE_CALIB_CONF   0xA1A4
 
#define SMARTDOF4_REC_ID_NOMIN_CALIB_CONF   0xA1A5
 
#define SMARTDOF4_REC_ID_RAW_ACCEL   0xE301
 
#define SMARTDOF4_REC_ID_ACCEL   0xE302
 
#define SMARTDOF4_REC_ID_LINEAR_ACCEL   0xE303
 
#define SMARTDOF4_REC_ID_GRAVITY   0xE304
 
#define SMARTDOF4_REC_ID_RAW_GYRO   0xE305
 
#define SMARTDOF4_REC_ID_GYRO_CALIB   0xE306
 
#define SMARTDOF4_REC_ID_GYRO_UNCALIB   0xE307
 
#define SMARTDOF4_REC_ID_RAW_MAGNETO   0xE308
 
#define SMARTDOF4_REC_ID_MAGNETO_CALIB   0xE309
 
#define SMARTDOF4_REC_ID_MAGNETO_UNCALIB   0xE30A
 
#define SMARTDOF4_REC_ID_ROT_VECTOR   0xE30B
 
#define SMARTDOF4_REC_ID_GAME_ROT_VECTOR   0xE30C
 
#define SMARTDOF4_REC_ID_GEO_ROT_VECTOR   0xE30D
 
#define SMARTDOF4_REC_ID_PRESSURE   0xE30E
 
#define SMARTDOF4_REC_ID_AMBIENT_LIGHT   0xE30F
 
#define SMARTDOF4_REC_ID_HUMIDITY   0xE310
 
#define SMARTDOF4_REC_ID_PROXI   0xE311
 
#define SMARTDOF4_REC_ID_TEMPERATURE   0xE312
 
#define SMARTDOF4_REC_ID_TAP_DETECT   0xE313
 
#define SMARTDOF4_REC_ID_STEP_DETECT   0xE314
 
#define SMARTDOF4_REC_ID_STEP_COUNT   0xE315
 
#define SMARTDOF4_REC_ID_SIG_MOTION   0xE316
 
#define SMARTDOF4_REC_ID_STABIL_CLASS   0xE317
 
#define SMARTDOF4_REC_ID_SHAKE_DETECT   0xE318
 
#define SMARTDOF4_REC_ID_FLIP_DETECT   0xE319
 
#define SMARTDOF4_REC_ID_PICK_DETECT   0xE31A
 
#define SMARTDOF4_REC_ID_STABIL_DETECT   0xE31B
 
#define SMARTDOF4_REC_ID_PERS_ACT_CLASS   0xE31C
 
#define SMARTDOF4_REC_ID_SLEEP_DETECT   0xE31D
 
#define SMARTDOF4_REC_ID_TILT_DETECT   0xE31E
 
#define SMARTDOF4_REC_ID_POCKET_DETECT   0xE31F
 
#define SMARTDOF4_REC_ID_CIRCLE_DETECT   0xE320
 
#define SMARTDOF4_REC_ID_HEART_RATE_MON   0xE321
 
#define SMARTDOF4_REC_ID_ARVR_ROT_VECTOR   0xE322
 
#define SMARTDOF4_REC_ID_ARVR_GAME_ROT_VECTOR   0xE323
 
#define SMARTDOF4_REC_ID_GYRO_INTEG_ROT_VEC   0xE324
 
#define SMARTDOF4_REC_ID_MOTION_REQ   0xE325
 
#define SMARTDOF4_TIMEOUT_MS   2000
 Smart DOF 4 timeout setting. More...
 
#define SMARTDOF4_QPOINT_RAW_ACCEL   0
 Smart DOF 4 Sensor data Q points setting. More...
 
#define SMARTDOF4_QPOINT_ACCEL   8
 
#define SMARTDOF4_QPOINT_LINEAR_ACCEL   8
 
#define SMARTDOF4_QPOINT_GRAVITY   8
 
#define SMARTDOF4_QPOINT_RAW_GYRO   0
 
#define SMARTDOF4_QPOINT_GYRO_CALIB   9
 
#define SMARTDOF4_QPOINT_GYRO_UNCALIB   9
 
#define SMARTDOF4_QPOINT_RAW_MAGNETO   0
 
#define SMARTDOF4_QPOINT_MAGNET_CALIB   4
 
#define SMARTDOF4_QPOINT_MAGNET_UNCALIB   4
 
#define SMARTDOF4_QPOINT_ROT_VECT   14
 
#define SMARTDOF4_QPOINT_GAME_ROT_VECT   14
 
#define SMARTDOF4_QPOINT_GEOMAG_ROT_VECT   14
 
#define SMARTDOF4_QPOINT_TAP_DETECT   0
 
#define SMARTDOF4_QPOINT_STEP_DETECT   0
 
#define SMARTDOF4_QPOINT_STEP_COUNT   0
 
#define SMARTDOF4_QPOINT_SIG_MOTION   0
 
#define SMARTDOF4_QPOINT_STABIL_CLASS   0
 
#define SMARTDOF4_QPOINT_SHAKE_DETECT   0
 
#define SMARTDOF4_QPOINT_STABIL_DETECT   0
 
#define SMARTDOF4_QPOINT_PERS_ACT_CLASS   0
 
#define SMARTDOF4_QPOINT_ARVR_STABIL_ROT_VECT   14
 
#define SMARTDOF4_QPOINT_ARVR_STABIL_GAME_ROT_VECT   14
 
#define SMARTDOF4_QPOINT_GYRO_INT_ROT_VECT   14
 
#define SMARTDOF4_SCALEQ(x)   ( 1.0f / ( 1u << x ) )
 Smart DOF 4 data calculation setting. More...
 
#define SMARTDOF4_GRAVITY   9.80665f
 
#define SMARTDOF4_RAD_TO_DEG   57.2957795f
 
#define SMARTDOF4_FEATURE_FLAGS   0x00
 Smart DOF 4 sensor feature setting. More...
 
#define SMARTDOF4_FEATURE_CHANCE_SENS   0x0000
 
#define SMARTDOF4_FEATURE_REP_INTERVAL_US   100000ul
 
#define SMARTDOF4_FEATURE_BATCH_INTERVAL_US   0ul
 
#define SMARTDOF4_FEATURE_SENSOR_SPEC   0x00000000ul
 
#define SMARTDOF4_DEVICE_ADDRESS_0   0x4A
 Smart DOF 4 device address setting. More...
 
#define SMARTDOF4_DEVICE_ADDRESS_1   0x4B
 
#define SMARTDOF4_SET_DATA_SAMPLE_EDGE   SET_SPI_DATA_SAMPLE_EDGE
 Data sample selection. More...
 
#define SMARTDOF4_SET_DATA_SAMPLE_MIDDLE   SET_SPI_DATA_SAMPLE_MIDDLE
 
#define SMARTDOF4_MAP_MIKROBUS(cfg, mikrobus)
 MikroBUS pin mapping. More...
 

Typedefs

typedef struct smartdof4_s smartdof4_t
 Smart DOF 4 Click context object. More...
 

Enumerations

enum  smartdof4_drv_t { SMARTDOF4_DRV_SEL_SPI, SMARTDOF4_DRV_SEL_I2C }
 Smart DOF 4 Click driver selector. More...
 
enum  smartdof4_return_value_t { SMARTDOF4_OK = 0, SMARTDOF4_ERROR = -1 }
 Smart DOF 4 Click return value data. More...
 

Functions

void smartdof4_cfg_setup (smartdof4_cfg_t *cfg)
 Smart DOF 4 configuration object setup function. More...
 
void smartdof4_drv_interface_sel (smartdof4_cfg_t *cfg, smartdof4_drv_t drv_sel)
 Smart DOF 4 driver interface setup function. More...
 
err_t smartdof4_init (smartdof4_t *ctx, smartdof4_cfg_t *cfg)
 Smart DOF 4 initialization function. More...
 
err_t smartdof4_default_cfg (smartdof4_t *ctx)
 Smart DOF 4 default configuration function. More...
 
err_t smartdof4_send_packet (smartdof4_t *ctx, uint8_t ch_num, uint8_t *payload, uint16_t len)
 Smart DOF 4 send packet function. More...
 
err_t smartdof4_read_packet (smartdof4_t *ctx)
 Smart DOF 4 read packet function. More...
 
void smartdof4_set_rst_pin (smartdof4_t *ctx, uint8_t state)
 Smart DOF 4 set rst pin function. More...
 
void smartdof4_set_wup_pin (smartdof4_t *ctx, uint8_t state)
 Smart DOF 4 set wup pin function. More...
 
uint8_t smartdof4_get_int_pin (smartdof4_t *ctx)
 Smart DOF 4 get int pin function. More...
 
void smartdof4_reset_device (smartdof4_t *ctx)
 Smart DOF 4 reset device function. More...
 
err_t smartdof4_wait_ready (smartdof4_t *ctx, uint16_t timeout_ms)
 Smart DOF 4 wait ready function. More...
 
err_t smartdof4_read_pid (smartdof4_t *ctx, smartdof4_pid_t *pid)
 Smart DOF 4 read pid function. More...
 
err_t smartdof4_frs_wr_req (smartdof4_t *ctx, uint16_t rec_id, uint16_t len)
 Smart DOF 4 frs wr req function. More...
 
err_t smartdof4_frs_wr_data_req (smartdof4_t *ctx, uint16_t offset, uint32_t data0_in, uint32_t data1_in)
 Smart DOF 4 frs wr data req function. More...
 
err_t smartdof4_frs_wr_resp (smartdof4_t *ctx, uint16_t *offset, uint8_t *status)
 Smart DOF 4 frs wr resp function. More...
 
err_t smartdof4_frs_rd_req (smartdof4_t *ctx, uint16_t rec_id)
 Smart DOF 4 frs rd req function. More...
 
err_t smartdof4_frs_rd_resp (smartdof4_t *ctx, uint16_t *offset, uint8_t *status, uint32_t *data0_out, uint32_t *data1_out, uint16_t *rec_id)
 Smart DOF 4 frs rd resp function. More...
 
err_t smartdof4_cmd_req (smartdof4_t *ctx, uint8_t cmd, uint8_t *params)
 Smart DOF 4 cmd req function. More...
 
err_t smartdof4_cmd_resp (smartdof4_t *ctx, uint8_t *cmd, uint8_t *params)
 Smart DOF 4 cmd resp function. More...
 
err_t smartdof4_feature_req (smartdof4_t *ctx, uint8_t rep_id)
 Smart DOF 4 feature req function. More...
 
err_t smartdof4_feature_set (smartdof4_t *ctx, smartdof4_feature_t *feat)
 Smart DOF 4 feature set function. More...
 
err_t smartdof4_feature_resp (smartdof4_t *ctx, smartdof4_feature_t *resp)
 Smart DOF 4 feature resp function. More...
 
err_t smartdof4_read_data (smartdof4_t *ctx, smartdof4_axis_t *accel, smartdof4_axis_t *gyro, smartdof4_axis_t *mag)
 Smart DOF 4 read data function. More...
 

Detailed Description

This file contains API for Smart DOF 4 Click Driver.

Typedef Documentation

◆ smartdof4_t

typedef struct smartdof4_s smartdof4_t

Smart DOF 4 Click context object.

Context object definition of Smart DOF 4 Click driver.

Enumeration Type Documentation

◆ smartdof4_drv_t

Smart DOF 4 Click driver selector.

Selects target driver interface of Smart DOF 4 Click driver.

Enumerator
SMARTDOF4_DRV_SEL_SPI 

SPI driver descriptor.

SMARTDOF4_DRV_SEL_I2C 

I2C driver descriptor.

◆ smartdof4_return_value_t

Smart DOF 4 Click return value data.

Predefined enum values for driver return values.

Enumerator
SMARTDOF4_OK 
SMARTDOF4_ERROR