branch for tests with T265
Dependencies: Lib_Cntrl AHRS Lib_Misc
Xtra_Sensors/TFMini_i2c.h@4:dc844fde64d7, 2019-11-22 (annotated)
- 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?
User | Revision | Line number | New 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 ®_h, const char ®_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 ®_h, const char ®_l, const uint8_t &val ); |
altb2 | 2:e7874762cc25 | 135 | void write16( const char ®_h, const char ®_l, const uint16_t &val ); |
altb2 | 2:e7874762cc25 | 136 | |
altb2 | 2:e7874762cc25 | 137 | void read( const char ®_h, const char ®_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 |