branch for tests with T265

Dependencies:   Lib_Cntrl AHRS Lib_Misc

Committer:
Kiwicjam
Date:
Fri Nov 22 08:40:26 2019 +0000
Revision:
4:dc844fde64d7
Parent:
2:e7874762cc25
Workin set, not running,

Who changed what in which revision?

UserRevisionLine numberNew contents of line
altb2 2:e7874762cc25 1 #ifndef TFMINI_I2C_H
altb2 2:e7874762cc25 2 #define TFMINI_I2C_H
altb2 2:e7874762cc25 3
altb2 2:e7874762cc25 4 # include <cstdint>
altb2 2:e7874762cc25 5 # include "mbed.h"
altb2 2:e7874762cc25 6
altb2 2:e7874762cc25 7 # define TFMINI_ADDRESS_DEFAULT 0x10
altb2 2:e7874762cc25 8
altb2 2:e7874762cc25 9 // data register address
altb2 2:e7874762cc25 10 #define TFMINI_READ_DATA_REG_H 0x01
altb2 2:e7874762cc25 11 #define TFMINI_READ_DATA_REG_L 0x02
altb2 2:e7874762cc25 12
altb2 2:e7874762cc25 13 // general parameter register address
altb2 2:e7874762cc25 14 #define TFMINI_RNG_GEAR_H 0x00
altb2 2:e7874762cc25 15 #define TFMINI_RNG_GEAR_L 0x50
altb2 2:e7874762cc25 16
altb2 2:e7874762cc25 17 #define TFMINI_DET_PAT_H 0x00
altb2 2:e7874762cc25 18 #define TFMINI_DET_PAT_L 0x51
altb2 2:e7874762cc25 19
altb2 2:e7874762cc25 20 #define TFMINI_SET_RNG_LIM_H 0x00
altb2 2:e7874762cc25 21 #define TFMINI_SET_RNG_LIM_L 0x55
altb2 2:e7874762cc25 22
altb2 2:e7874762cc25 23 #define TFMINI_RNG_OUT_LIM_THR_H 0x00
altb2 2:e7874762cc25 24 #define TFMINI_RNG_OUT_LIM_THR_L 0x56
altb2 2:e7874762cc25 25
altb2 2:e7874762cc25 26 #define TFMINI_STREN_THR_LOW_H 0x00
altb2 2:e7874762cc25 27 #define TFMINI_STREN_THR_LOW_L 0x58
altb2 2:e7874762cc25 28
altb2 2:e7874762cc25 29 #define TFMINI_STREN_THR_UPP_H 0x00
altb2 2:e7874762cc25 30 #define TFMINI_STREN_THR_UPP_L 0x5A
altb2 2:e7874762cc25 31
altb2 2:e7874762cc25 32 #define TFMINI_OUT_VAL_SGN_STREN_H 0x00
altb2 2:e7874762cc25 33 #define TFMINI_OUT_VAL_SGN_STREN_L 0x5C
altb2 2:e7874762cc25 34
altb2 2:e7874762cc25 35 #define TFMINI_UNIT_DIST_H 0x00
altb2 2:e7874762cc25 36 #define TFMINI_UNIT_DIST_L 0x66
altb2 2:e7874762cc25 37
altb2 2:e7874762cc25 38 // special parameter register address
altb2 2:e7874762cc25 39 #define TFMINI_SLAVE_ADDR_H 0x00
altb2 2:e7874762cc25 40 #define TFMINI_SLAVE_ADDR_L 0x26
altb2 2:e7874762cc25 41
altb2 2:e7874762cc25 42 #define TFMINI_TRIG_MOD_H 0x00
altb2 2:e7874762cc25 43 #define TFMINI_TRIG_MOD_L 0x27
altb2 2:e7874762cc25 44
altb2 2:e7874762cc25 45 #define TFMINI_EXT_COM_TRIG_REG_H 0x01
altb2 2:e7874762cc25 46 #define TFMINI_EXT_COM_TRIG_REG_L 0x00
altb2 2:e7874762cc25 47
altb2 2:e7874762cc25 48 #define TFMINI_RESET_H 0x00
altb2 2:e7874762cc25 49 #define TFMINI_RESET_L 0x70
altb2 2:e7874762cc25 50
altb2 2:e7874762cc25 51 enum ranging_gear_mode_t {
altb2 2:e7874762cc25 52 SHORTE = 0x00,
altb2 2:e7874762cc25 53 MIDDLE = 0x03,
altb2 2:e7874762cc25 54 LONGE = 0x07,
altb2 2:e7874762cc25 55 };
altb2 2:e7874762cc25 56
altb2 2:e7874762cc25 57 enum detection_pattern_t {
altb2 2:e7874762cc25 58 AUTO_ = 0x00,
altb2 2:e7874762cc25 59 FIX = 0x01,
altb2 2:e7874762cc25 60 };
altb2 2:e7874762cc25 61
altb2 2:e7874762cc25 62 enum setting_range_limit_t {
altb2 2:e7874762cc25 63 ENABLED = 0x00,
altb2 2:e7874762cc25 64 DISABLED = 0x01,
altb2 2:e7874762cc25 65 };
altb2 2:e7874762cc25 66
altb2 2:e7874762cc25 67 enum unit_distance_t {
altb2 2:e7874762cc25 68 MILLIMETER = 0x00,
altb2 2:e7874762cc25 69 CENTIMETER = 0x01,
altb2 2:e7874762cc25 70 };
altb2 2:e7874762cc25 71
altb2 2:e7874762cc25 72 enum trigger_mode_t {
altb2 2:e7874762cc25 73 INTERNAL = 0x00,
altb2 2:e7874762cc25 74 EXTERNAL = 0x01,
altb2 2:e7874762cc25 75 };
altb2 2:e7874762cc25 76
altb2 2:e7874762cc25 77
altb2 2:e7874762cc25 78 class TFMini_i2c
altb2 2:e7874762cc25 79 {
altb2 2:e7874762cc25 80 public:
altb2 2:e7874762cc25 81 // constructor
altb2 2:e7874762cc25 82 TFMini_i2c(I2C * i2c, const uint8_t & addr = TFMINI_ADDRESS_DEFAULT);
altb2 2:e7874762cc25 83
altb2 2:e7874762cc25 84 // deconstructor
altb2 2:e7874762cc25 85 virtual ~TFMini_i2c();
altb2 2:e7874762cc25 86
altb2 2:e7874762cc25 87 operator float();
altb2 2:e7874762cc25 88
altb2 2:e7874762cc25 89 // Methods
altb2 2:e7874762cc25 90
altb2 2:e7874762cc25 91 public:
altb2 2:e7874762cc25 92
altb2 2:e7874762cc25 93 void initialize();
altb2 2:e7874762cc25 94
altb2 2:e7874762cc25 95 //Reading Data from TFmini-I2C
altb2 2:e7874762cc25 96 void readRegister( const char &reg_h, const char &reg_l, char * bufIn, const uint8_t & len );
altb2 2:e7874762cc25 97 void readMeasurement( uint16_t * dist, uint16_t * stren, uint8_t * mode );
altb2 2:e7874762cc25 98
altb2 2:e7874762cc25 99 // General Parameter Configuration
altb2 2:e7874762cc25 100 void setRangingGearMode( detection_pattern_t mode, const ranging_gear_mode_t dist = SHORTE);
altb2 2:e7874762cc25 101
altb2 2:e7874762cc25 102 void setRangeLimit( setting_range_limit_t mode, const uint16_t & threshold = 0x2EE0 );
altb2 2:e7874762cc25 103
altb2 2:e7874762cc25 104 void setLowerLimitOfSignalStrengthThreshold( uint16_t & threshold );
altb2 2:e7874762cc25 105
altb2 2:e7874762cc25 106 void setUpperLimitOfSignalStrengthThreshold( uint16_t & threshold );
altb2 2:e7874762cc25 107
altb2 2:e7874762cc25 108 void setOutputValueOfSignalStrengthThresholdAtHighestPoint( uint16_t & val );
altb2 2:e7874762cc25 109
altb2 2:e7874762cc25 110 void setDistanceUnit( unit_distance_t unit );
altb2 2:e7874762cc25 111
altb2 2:e7874762cc25 112
altb2 2:e7874762cc25 113 // Special Parameter Configuration
altb2 2:e7874762cc25 114 void setSlaveAddress(const uint8_t &addr );
altb2 2:e7874762cc25 115
altb2 2:e7874762cc25 116 void setTriggerMode( trigger_mode_t mode );
altb2 2:e7874762cc25 117
altb2 2:e7874762cc25 118 void externalCommandTrigger( void );
altb2 2:e7874762cc25 119
altb2 2:e7874762cc25 120 void reset( void );
altb2 2:e7874762cc25 121
altb2 2:e7874762cc25 122
altb2 2:e7874762cc25 123 private:
altb2 2:e7874762cc25 124
altb2 2:e7874762cc25 125 I2C * i2c_;
altb2 2:e7874762cc25 126 uint8_t addr_ ;
altb2 2:e7874762cc25 127
altb2 2:e7874762cc25 128 uint8_t waitTime_ms_;
altb2 2:e7874762cc25 129
altb2 2:e7874762cc25 130 bool isInitialized_;
altb2 2:e7874762cc25 131
altb2 2:e7874762cc25 132 void setSlaveAddrActive( void );
altb2 2:e7874762cc25 133
altb2 2:e7874762cc25 134 void write8( const char &reg_h, const char &reg_l, const uint8_t &val );
altb2 2:e7874762cc25 135 void write16( const char &reg_h, const char &reg_l, const uint16_t &val );
altb2 2:e7874762cc25 136
altb2 2:e7874762cc25 137 void read( const char &reg_h, const char &reg_l, char * bufIn,
altb2 2:e7874762cc25 138 const uint8_t &len = 0 );
altb2 2:e7874762cc25 139
altb2 2:e7874762cc25 140
altb2 2:e7874762cc25 141 };
altb2 2:e7874762cc25 142
altb2 2:e7874762cc25 143 #endif