branch for tests with T265
Dependencies: Lib_Cntrl AHRS Lib_Misc
Diff: Xtra_Sensors/TFMini_i2c.h
- Revision:
- 2:e7874762cc25
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Xtra_Sensors/TFMini_i2c.h Mon Oct 21 17:16:11 2019 +0000 @@ -0,0 +1,143 @@ +#ifndef TFMINI_I2C_H +#define TFMINI_I2C_H + +# include <cstdint> +# include "mbed.h" + +# define TFMINI_ADDRESS_DEFAULT 0x10 + +// data register address +#define TFMINI_READ_DATA_REG_H 0x01 +#define TFMINI_READ_DATA_REG_L 0x02 + +// general parameter register address +#define TFMINI_RNG_GEAR_H 0x00 +#define TFMINI_RNG_GEAR_L 0x50 + +#define TFMINI_DET_PAT_H 0x00 +#define TFMINI_DET_PAT_L 0x51 + +#define TFMINI_SET_RNG_LIM_H 0x00 +#define TFMINI_SET_RNG_LIM_L 0x55 + +#define TFMINI_RNG_OUT_LIM_THR_H 0x00 +#define TFMINI_RNG_OUT_LIM_THR_L 0x56 + +#define TFMINI_STREN_THR_LOW_H 0x00 +#define TFMINI_STREN_THR_LOW_L 0x58 + +#define TFMINI_STREN_THR_UPP_H 0x00 +#define TFMINI_STREN_THR_UPP_L 0x5A + +#define TFMINI_OUT_VAL_SGN_STREN_H 0x00 +#define TFMINI_OUT_VAL_SGN_STREN_L 0x5C + +#define TFMINI_UNIT_DIST_H 0x00 +#define TFMINI_UNIT_DIST_L 0x66 + +// special parameter register address +#define TFMINI_SLAVE_ADDR_H 0x00 +#define TFMINI_SLAVE_ADDR_L 0x26 + +#define TFMINI_TRIG_MOD_H 0x00 +#define TFMINI_TRIG_MOD_L 0x27 + +#define TFMINI_EXT_COM_TRIG_REG_H 0x01 +#define TFMINI_EXT_COM_TRIG_REG_L 0x00 + +#define TFMINI_RESET_H 0x00 +#define TFMINI_RESET_L 0x70 + +enum ranging_gear_mode_t { + SHORTE = 0x00, + MIDDLE = 0x03, + LONGE = 0x07, +}; + +enum detection_pattern_t { + AUTO_ = 0x00, + FIX = 0x01, +}; + +enum setting_range_limit_t { + ENABLED = 0x00, + DISABLED = 0x01, +}; + +enum unit_distance_t { + MILLIMETER = 0x00, + CENTIMETER = 0x01, +}; + +enum trigger_mode_t { + INTERNAL = 0x00, + EXTERNAL = 0x01, +}; + + +class TFMini_i2c +{ +public: + // constructor + TFMini_i2c(I2C * i2c, const uint8_t & addr = TFMINI_ADDRESS_DEFAULT); + + // deconstructor + virtual ~TFMini_i2c(); + + operator float(); + + // Methods + +public: + + void initialize(); + + //Reading Data from TFmini-I2C + void readRegister( const char ®_h, const char ®_l, char * bufIn, const uint8_t & len ); + void readMeasurement( uint16_t * dist, uint16_t * stren, uint8_t * mode ); + + // General Parameter Configuration + void setRangingGearMode( detection_pattern_t mode, const ranging_gear_mode_t dist = SHORTE); + + void setRangeLimit( setting_range_limit_t mode, const uint16_t & threshold = 0x2EE0 ); + + void setLowerLimitOfSignalStrengthThreshold( uint16_t & threshold ); + + void setUpperLimitOfSignalStrengthThreshold( uint16_t & threshold ); + + void setOutputValueOfSignalStrengthThresholdAtHighestPoint( uint16_t & val ); + + void setDistanceUnit( unit_distance_t unit ); + + + // Special Parameter Configuration + void setSlaveAddress(const uint8_t &addr ); + + void setTriggerMode( trigger_mode_t mode ); + + void externalCommandTrigger( void ); + + void reset( void ); + + +private: + + I2C * i2c_; + uint8_t addr_ ; + + uint8_t waitTime_ms_; + + bool isInitialized_; + + void setSlaveAddrActive( void ); + + void write8( const char ®_h, const char ®_l, const uint8_t &val ); + void write16( const char ®_h, const char ®_l, const uint16_t &val ); + + void read( const char ®_h, const char ®_l, char * bufIn, + const uint8_t &len = 0 ); + + +}; + +#endif \ No newline at end of file