Elliot Heisenberg / SFE_APDS9960

Fork of SFE_APDS9960 by Nenad Milosevic

Committer:
synvox
Date:
Fri Apr 10 13:21:48 2015 +0000
Revision:
0:c04b49e0a678
Child:
1:e6ced58f40de
first working version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
synvox 0:c04b49e0a678 1 /**
synvox 0:c04b49e0a678 2 * @file SparkFun_APDS-9960.h
synvox 0:c04b49e0a678 3 * @brief Library for the SparkFun APDS-9960 breakout board
synvox 0:c04b49e0a678 4 * @author Shawn Hymel (SparkFun Electronics)
synvox 0:c04b49e0a678 5 *
synvox 0:c04b49e0a678 6 * @copyright This code is public domain but you buy me a beer if you use
synvox 0:c04b49e0a678 7 * this and we meet someday (Beerware license).
synvox 0:c04b49e0a678 8 *
synvox 0:c04b49e0a678 9 * Adapted for mbed by Nenad Milosevic (synvox.ch) in April 2015.
synvox 0:c04b49e0a678 10 *
synvox 0:c04b49e0a678 11 * This library interfaces the Avago APDS-9960 to mbed over I2C. The library
synvox 0:c04b49e0a678 12 * relies on the mbed I2C-library. To use the library, instantiate an
synvox 0:c04b49e0a678 13 * APDS9960 object, call init(), and call the appropriate functions.
synvox 0:c04b49e0a678 14 */
synvox 0:c04b49e0a678 15
synvox 0:c04b49e0a678 16 #ifndef SparkFun_APDS9960_H
synvox 0:c04b49e0a678 17 #define SparkFun_APDS9960_H
synvox 0:c04b49e0a678 18
synvox 0:c04b49e0a678 19 /* APDS-9960 I2C address */
synvox 0:c04b49e0a678 20 #define APDS9960_I2C_ADDR 0x39
synvox 0:c04b49e0a678 21 #define APDS9960_I2C_ADDR8 (APDS9960_I2C_ADDR << 1)
synvox 0:c04b49e0a678 22
synvox 0:c04b49e0a678 23 /* Gesture parameters */
synvox 0:c04b49e0a678 24 #define GESTURE_THRESHOLD_OUT 10
synvox 0:c04b49e0a678 25 #define GESTURE_SENSITIVITY_1 50
synvox 0:c04b49e0a678 26 #define GESTURE_SENSITIVITY_2 20
synvox 0:c04b49e0a678 27
synvox 0:c04b49e0a678 28 /* Error code for returned values */
synvox 0:c04b49e0a678 29 #define ERROR 0xFF
synvox 0:c04b49e0a678 30
synvox 0:c04b49e0a678 31 /* Acceptable device IDs */
synvox 0:c04b49e0a678 32 #define APDS9960_ID_1 0xAB
synvox 0:c04b49e0a678 33 #define APDS9960_ID_2 0x9C
synvox 0:c04b49e0a678 34
synvox 0:c04b49e0a678 35 /* Misc parameters */
synvox 0:c04b49e0a678 36 #define FIFO_PAUSE_TIME 30 // Wait period (ms) between FIFO reads
synvox 0:c04b49e0a678 37
synvox 0:c04b49e0a678 38 /* APDS-9960 register addresses */
synvox 0:c04b49e0a678 39 #define APDS9960_ENABLE 0x80
synvox 0:c04b49e0a678 40 #define APDS9960_ATIME 0x81
synvox 0:c04b49e0a678 41 #define APDS9960_WTIME 0x83
synvox 0:c04b49e0a678 42 #define APDS9960_AILTL 0x84
synvox 0:c04b49e0a678 43 #define APDS9960_AILTH 0x85
synvox 0:c04b49e0a678 44 #define APDS9960_AIHTL 0x86
synvox 0:c04b49e0a678 45 #define APDS9960_AIHTH 0x87
synvox 0:c04b49e0a678 46 #define APDS9960_PILT 0x89
synvox 0:c04b49e0a678 47 #define APDS9960_PIHT 0x8B
synvox 0:c04b49e0a678 48 #define APDS9960_PERS 0x8C
synvox 0:c04b49e0a678 49 #define APDS9960_CONFIG1 0x8D
synvox 0:c04b49e0a678 50 #define APDS9960_PPULSE 0x8E
synvox 0:c04b49e0a678 51 #define APDS9960_CONTROL 0x8F
synvox 0:c04b49e0a678 52 #define APDS9960_CONFIG2 0x90
synvox 0:c04b49e0a678 53 #define APDS9960_ID 0x92
synvox 0:c04b49e0a678 54 #define APDS9960_STATUS 0x93
synvox 0:c04b49e0a678 55 #define APDS9960_CDATAL 0x94
synvox 0:c04b49e0a678 56 #define APDS9960_CDATAH 0x95
synvox 0:c04b49e0a678 57 #define APDS9960_RDATAL 0x96
synvox 0:c04b49e0a678 58 #define APDS9960_RDATAH 0x97
synvox 0:c04b49e0a678 59 #define APDS9960_GDATAL 0x98
synvox 0:c04b49e0a678 60 #define APDS9960_GDATAH 0x99
synvox 0:c04b49e0a678 61 #define APDS9960_BDATAL 0x9A
synvox 0:c04b49e0a678 62 #define APDS9960_BDATAH 0x9B
synvox 0:c04b49e0a678 63 #define APDS9960_PDATA 0x9C
synvox 0:c04b49e0a678 64 #define APDS9960_POFFSET_UR 0x9D
synvox 0:c04b49e0a678 65 #define APDS9960_POFFSET_DL 0x9E
synvox 0:c04b49e0a678 66 #define APDS9960_CONFIG3 0x9F
synvox 0:c04b49e0a678 67 #define APDS9960_GPENTH 0xA0
synvox 0:c04b49e0a678 68 #define APDS9960_GEXTH 0xA1
synvox 0:c04b49e0a678 69 #define APDS9960_GCONF1 0xA2
synvox 0:c04b49e0a678 70 #define APDS9960_GCONF2 0xA3
synvox 0:c04b49e0a678 71 #define APDS9960_GOFFSET_U 0xA4
synvox 0:c04b49e0a678 72 #define APDS9960_GOFFSET_D 0xA5
synvox 0:c04b49e0a678 73 #define APDS9960_GOFFSET_L 0xA7
synvox 0:c04b49e0a678 74 #define APDS9960_GOFFSET_R 0xA9
synvox 0:c04b49e0a678 75 #define APDS9960_GPULSE 0xA6
synvox 0:c04b49e0a678 76 #define APDS9960_GCONF3 0xAA
synvox 0:c04b49e0a678 77 #define APDS9960_GCONF4 0xAB
synvox 0:c04b49e0a678 78 #define APDS9960_GFLVL 0xAE
synvox 0:c04b49e0a678 79 #define APDS9960_GSTATUS 0xAF
synvox 0:c04b49e0a678 80 #define APDS9960_IFORCE 0xE4
synvox 0:c04b49e0a678 81 #define APDS9960_PICLEAR 0xE5
synvox 0:c04b49e0a678 82 #define APDS9960_CICLEAR 0xE6
synvox 0:c04b49e0a678 83 #define APDS9960_AICLEAR 0xE7
synvox 0:c04b49e0a678 84 #define APDS9960_GFIFO_U 0xFC
synvox 0:c04b49e0a678 85 #define APDS9960_GFIFO_D 0xFD
synvox 0:c04b49e0a678 86 #define APDS9960_GFIFO_L 0xFE
synvox 0:c04b49e0a678 87 #define APDS9960_GFIFO_R 0xFF
synvox 0:c04b49e0a678 88
synvox 0:c04b49e0a678 89 /* Bit fields */
synvox 0:c04b49e0a678 90 #define APDS9960_PON 0x01 //0b00000001
synvox 0:c04b49e0a678 91 #define APDS9960_AEN 0x02 //0b00000010
synvox 0:c04b49e0a678 92 #define APDS9960_PEN 0x04 //0b00000100
synvox 0:c04b49e0a678 93 #define APDS9960_WEN 0x08 //0b00001000
synvox 0:c04b49e0a678 94 #define APSD9960_AIEN 0x10 //0b00010000
synvox 0:c04b49e0a678 95 #define APDS9960_PIEN 0x20 //0b00100000
synvox 0:c04b49e0a678 96 #define APDS9960_GEN 0x40 //0b01000000
synvox 0:c04b49e0a678 97 #define APDS9960_GVALID 0x01 //0b00000001
synvox 0:c04b49e0a678 98
synvox 0:c04b49e0a678 99 /* On/Off definitions */
synvox 0:c04b49e0a678 100 #define OFF 0
synvox 0:c04b49e0a678 101 #define ON 1
synvox 0:c04b49e0a678 102
synvox 0:c04b49e0a678 103 /* Acceptable parameters for setMode */
synvox 0:c04b49e0a678 104 #define POWER 0
synvox 0:c04b49e0a678 105 #define AMBIENT_LIGHT 1
synvox 0:c04b49e0a678 106 #define PROXIMITY 2
synvox 0:c04b49e0a678 107 #define WAIT 3
synvox 0:c04b49e0a678 108 #define AMBIENT_LIGHT_INT 4
synvox 0:c04b49e0a678 109 #define PROXIMITY_INT 5
synvox 0:c04b49e0a678 110 #define GESTURE 6
synvox 0:c04b49e0a678 111 #define ALL_MODES 7
synvox 0:c04b49e0a678 112
synvox 0:c04b49e0a678 113 /* LED Drive values */
synvox 0:c04b49e0a678 114 #define LED_DRIVE_100MA 0
synvox 0:c04b49e0a678 115 #define LED_DRIVE_50MA 1
synvox 0:c04b49e0a678 116 #define LED_DRIVE_25MA 2
synvox 0:c04b49e0a678 117 #define LED_DRIVE_12_5MA 3
synvox 0:c04b49e0a678 118
synvox 0:c04b49e0a678 119 /* Proximity Gain (PGAIN) values */
synvox 0:c04b49e0a678 120 #define PGAIN_1X 0
synvox 0:c04b49e0a678 121 #define PGAIN_2X 1
synvox 0:c04b49e0a678 122 #define PGAIN_4X 2
synvox 0:c04b49e0a678 123 #define PGAIN_8X 3
synvox 0:c04b49e0a678 124
synvox 0:c04b49e0a678 125 /* ALS Gain (AGAIN) values */
synvox 0:c04b49e0a678 126 #define AGAIN_1X 0
synvox 0:c04b49e0a678 127 #define AGAIN_4X 1
synvox 0:c04b49e0a678 128 #define AGAIN_16X 2
synvox 0:c04b49e0a678 129 #define AGAIN_64X 3
synvox 0:c04b49e0a678 130
synvox 0:c04b49e0a678 131 /* Gesture Gain (GGAIN) values */
synvox 0:c04b49e0a678 132 #define GGAIN_1X 0
synvox 0:c04b49e0a678 133 #define GGAIN_2X 1
synvox 0:c04b49e0a678 134 #define GGAIN_4X 2
synvox 0:c04b49e0a678 135 #define GGAIN_8X 3
synvox 0:c04b49e0a678 136
synvox 0:c04b49e0a678 137 /* LED Boost values */
synvox 0:c04b49e0a678 138 #define LED_BOOST_100 0
synvox 0:c04b49e0a678 139 #define LED_BOOST_150 1
synvox 0:c04b49e0a678 140 #define LED_BOOST_200 2
synvox 0:c04b49e0a678 141 #define LED_BOOST_300 3
synvox 0:c04b49e0a678 142
synvox 0:c04b49e0a678 143 /* Gesture wait time values */
synvox 0:c04b49e0a678 144 #define GWTIME_0MS 0
synvox 0:c04b49e0a678 145 #define GWTIME_2_8MS 1
synvox 0:c04b49e0a678 146 #define GWTIME_5_6MS 2
synvox 0:c04b49e0a678 147 #define GWTIME_8_4MS 3
synvox 0:c04b49e0a678 148 #define GWTIME_14_0MS 4
synvox 0:c04b49e0a678 149 #define GWTIME_22_4MS 5
synvox 0:c04b49e0a678 150 #define GWTIME_30_8MS 6
synvox 0:c04b49e0a678 151 #define GWTIME_39_2MS 7
synvox 0:c04b49e0a678 152
synvox 0:c04b49e0a678 153 /* Default values */
synvox 0:c04b49e0a678 154 #define DEFAULT_ATIME 219 // 103ms
synvox 0:c04b49e0a678 155 #define DEFAULT_WTIME 246 // 27ms
synvox 0:c04b49e0a678 156 #define DEFAULT_PROX_PPULSE 0x87 // 16us, 8 pulses
synvox 0:c04b49e0a678 157 #define DEFAULT_GESTURE_PPULSE 0x89 // 16us, 10 pulses
synvox 0:c04b49e0a678 158 #define DEFAULT_POFFSET_UR 0 // 0 offset
synvox 0:c04b49e0a678 159 #define DEFAULT_POFFSET_DL 0 // 0 offset
synvox 0:c04b49e0a678 160 #define DEFAULT_CONFIG1 0x60 // No 12x wait (WTIME) factor
synvox 0:c04b49e0a678 161 #define DEFAULT_LDRIVE LED_DRIVE_100MA
synvox 0:c04b49e0a678 162 #define DEFAULT_PGAIN PGAIN_4X
synvox 0:c04b49e0a678 163 #define DEFAULT_AGAIN AGAIN_4X
synvox 0:c04b49e0a678 164 #define DEFAULT_PILT 0 // Low proximity threshold
synvox 0:c04b49e0a678 165 #define DEFAULT_PIHT 50 // High proximity threshold
synvox 0:c04b49e0a678 166 #define DEFAULT_AILT 0xFFFF // Force interrupt for calibration
synvox 0:c04b49e0a678 167 #define DEFAULT_AIHT 0
synvox 0:c04b49e0a678 168 #define DEFAULT_PERS 0x11 // 2 consecutive prox or ALS for int.
synvox 0:c04b49e0a678 169 #define DEFAULT_CONFIG2 0x01 // No saturation interrupts or LED boost
synvox 0:c04b49e0a678 170 #define DEFAULT_CONFIG3 0 // Enable all photodiodes, no SAI
synvox 0:c04b49e0a678 171 #define DEFAULT_GPENTH 40 // Threshold for entering gesture mode
synvox 0:c04b49e0a678 172 #define DEFAULT_GEXTH 30 // Threshold for exiting gesture mode
synvox 0:c04b49e0a678 173 #define DEFAULT_GCONF1 0x40 // 4 gesture events for int., 1 for exit
synvox 0:c04b49e0a678 174 #define DEFAULT_GGAIN GGAIN_4X
synvox 0:c04b49e0a678 175 #define DEFAULT_GLDRIVE LED_DRIVE_100MA
synvox 0:c04b49e0a678 176 #define DEFAULT_GWTIME GWTIME_2_8MS
synvox 0:c04b49e0a678 177 #define DEFAULT_GOFFSET 0 // No offset scaling for gesture mode
synvox 0:c04b49e0a678 178 #define DEFAULT_GPULSE 0xC9 // 32us, 10 pulses
synvox 0:c04b49e0a678 179 #define DEFAULT_GCONF3 0 // All photodiodes active during gesture
synvox 0:c04b49e0a678 180 #define DEFAULT_GIEN 0 // Disable gesture interrupts
synvox 0:c04b49e0a678 181
synvox 0:c04b49e0a678 182 /* Direction definitions */
synvox 0:c04b49e0a678 183 enum {
synvox 0:c04b49e0a678 184 DIR_NONE,
synvox 0:c04b49e0a678 185 DIR_LEFT,
synvox 0:c04b49e0a678 186 DIR_RIGHT,
synvox 0:c04b49e0a678 187 DIR_UP,
synvox 0:c04b49e0a678 188 DIR_DOWN,
synvox 0:c04b49e0a678 189 DIR_NEAR,
synvox 0:c04b49e0a678 190 DIR_FAR,
synvox 0:c04b49e0a678 191 DIR_ALL
synvox 0:c04b49e0a678 192 };
synvox 0:c04b49e0a678 193
synvox 0:c04b49e0a678 194 /* State definitions */
synvox 0:c04b49e0a678 195 enum {
synvox 0:c04b49e0a678 196 NA_STATE,
synvox 0:c04b49e0a678 197 NEAR_STATE,
synvox 0:c04b49e0a678 198 FAR_STATE,
synvox 0:c04b49e0a678 199 ALL_STATE
synvox 0:c04b49e0a678 200 };
synvox 0:c04b49e0a678 201
synvox 0:c04b49e0a678 202 /* Container for gesture data */
synvox 0:c04b49e0a678 203 typedef struct gesture_data_type {
synvox 0:c04b49e0a678 204 uint8_t u_data[32];
synvox 0:c04b49e0a678 205 uint8_t d_data[32];
synvox 0:c04b49e0a678 206 uint8_t l_data[32];
synvox 0:c04b49e0a678 207 uint8_t r_data[32];
synvox 0:c04b49e0a678 208 uint8_t index;
synvox 0:c04b49e0a678 209 uint8_t total_gestures;
synvox 0:c04b49e0a678 210 uint8_t in_threshold;
synvox 0:c04b49e0a678 211 uint8_t out_threshold;
synvox 0:c04b49e0a678 212 } gesture_data_type;
synvox 0:c04b49e0a678 213
synvox 0:c04b49e0a678 214 /* APDS9960 Class */
synvox 0:c04b49e0a678 215 class SparkFun_APDS9960 {
synvox 0:c04b49e0a678 216 public:
synvox 0:c04b49e0a678 217
synvox 0:c04b49e0a678 218 /* Initialization methods */
synvox 0:c04b49e0a678 219 SparkFun_APDS9960(I2C &i2c);
synvox 0:c04b49e0a678 220 ~SparkFun_APDS9960();
synvox 0:c04b49e0a678 221 bool init(int apds_i2c_freq);
synvox 0:c04b49e0a678 222 uint8_t getMode();
synvox 0:c04b49e0a678 223 bool setMode(uint8_t mode, uint8_t enable);
synvox 0:c04b49e0a678 224
synvox 0:c04b49e0a678 225 /* Turn the APDS-9960 on and off */
synvox 0:c04b49e0a678 226 bool enablePower();
synvox 0:c04b49e0a678 227 bool disablePower();
synvox 0:c04b49e0a678 228
synvox 0:c04b49e0a678 229 /* Enable or disable specific sensors */
synvox 0:c04b49e0a678 230 bool enableLightSensor(bool interrupts = false);
synvox 0:c04b49e0a678 231 bool disableLightSensor();
synvox 0:c04b49e0a678 232 bool enableProximitySensor(bool interrupts = false);
synvox 0:c04b49e0a678 233 bool disableProximitySensor();
synvox 0:c04b49e0a678 234 bool enableGestureSensor(bool interrupts = true);
synvox 0:c04b49e0a678 235 bool disableGestureSensor();
synvox 0:c04b49e0a678 236
synvox 0:c04b49e0a678 237 /* LED drive strength control */
synvox 0:c04b49e0a678 238 uint8_t getLEDDrive();
synvox 0:c04b49e0a678 239 bool setLEDDrive(uint8_t drive);
synvox 0:c04b49e0a678 240 uint8_t getGestureLEDDrive();
synvox 0:c04b49e0a678 241 bool setGestureLEDDrive(uint8_t drive);
synvox 0:c04b49e0a678 242
synvox 0:c04b49e0a678 243 /* Gain control */
synvox 0:c04b49e0a678 244 uint8_t getAmbientLightGain();
synvox 0:c04b49e0a678 245 bool setAmbientLightGain(uint8_t gain);
synvox 0:c04b49e0a678 246 uint8_t getProximityGain();
synvox 0:c04b49e0a678 247 bool setProximityGain(uint8_t gain);
synvox 0:c04b49e0a678 248 uint8_t getGestureGain();
synvox 0:c04b49e0a678 249 bool setGestureGain(uint8_t gain);
synvox 0:c04b49e0a678 250
synvox 0:c04b49e0a678 251 /* Get and set light interrupt thresholds */
synvox 0:c04b49e0a678 252 bool getLightIntLowThreshold(uint16_t &threshold);
synvox 0:c04b49e0a678 253 bool setLightIntLowThreshold(uint16_t threshold);
synvox 0:c04b49e0a678 254 bool getLightIntHighThreshold(uint16_t &threshold);
synvox 0:c04b49e0a678 255 bool setLightIntHighThreshold(uint16_t threshold);
synvox 0:c04b49e0a678 256
synvox 0:c04b49e0a678 257 /* Get and set proximity interrupt thresholds */
synvox 0:c04b49e0a678 258 bool getProximityIntLowThreshold(uint8_t &threshold);
synvox 0:c04b49e0a678 259 bool setProximityIntLowThreshold(uint8_t threshold);
synvox 0:c04b49e0a678 260 bool getProximityIntHighThreshold(uint8_t &threshold);
synvox 0:c04b49e0a678 261 bool setProximityIntHighThreshold(uint8_t threshold);
synvox 0:c04b49e0a678 262
synvox 0:c04b49e0a678 263 /* Get and set interrupt enables */
synvox 0:c04b49e0a678 264 uint8_t getAmbientLightIntEnable();
synvox 0:c04b49e0a678 265 bool setAmbientLightIntEnable(uint8_t enable);
synvox 0:c04b49e0a678 266 uint8_t getProximityIntEnable();
synvox 0:c04b49e0a678 267 bool setProximityIntEnable(uint8_t enable);
synvox 0:c04b49e0a678 268 uint8_t getGestureIntEnable();
synvox 0:c04b49e0a678 269 bool setGestureIntEnable(uint8_t enable);
synvox 0:c04b49e0a678 270
synvox 0:c04b49e0a678 271 /* Clear interrupts */
synvox 0:c04b49e0a678 272 bool clearAmbientLightInt();
synvox 0:c04b49e0a678 273 bool clearProximityInt();
synvox 0:c04b49e0a678 274
synvox 0:c04b49e0a678 275 /* Ambient light methods */
synvox 0:c04b49e0a678 276 bool readAmbientLight(uint16_t &val);
synvox 0:c04b49e0a678 277 bool readRedLight(uint16_t &val);
synvox 0:c04b49e0a678 278 bool readGreenLight(uint16_t &val);
synvox 0:c04b49e0a678 279 bool readBlueLight(uint16_t &val);
synvox 0:c04b49e0a678 280
synvox 0:c04b49e0a678 281 /* Proximity methods */
synvox 0:c04b49e0a678 282 bool readProximity(uint8_t &val);
synvox 0:c04b49e0a678 283
synvox 0:c04b49e0a678 284 /* Gesture methods */
synvox 0:c04b49e0a678 285 bool isGestureAvailable();
synvox 0:c04b49e0a678 286 int readGesture();
synvox 0:c04b49e0a678 287
synvox 0:c04b49e0a678 288 private:
synvox 0:c04b49e0a678 289
synvox 0:c04b49e0a678 290 /* Gesture processing */
synvox 0:c04b49e0a678 291 void resetGestureParameters();
synvox 0:c04b49e0a678 292 bool processGestureData();
synvox 0:c04b49e0a678 293 bool decodeGesture();
synvox 0:c04b49e0a678 294
synvox 0:c04b49e0a678 295 /* Proximity Interrupt Threshold */
synvox 0:c04b49e0a678 296 uint8_t getProxIntLowThresh();
synvox 0:c04b49e0a678 297 bool setProxIntLowThresh(uint8_t threshold);
synvox 0:c04b49e0a678 298 uint8_t getProxIntHighThresh();
synvox 0:c04b49e0a678 299 bool setProxIntHighThresh(uint8_t threshold);
synvox 0:c04b49e0a678 300
synvox 0:c04b49e0a678 301 /* LED Boost Control */
synvox 0:c04b49e0a678 302 uint8_t getLEDBoost();
synvox 0:c04b49e0a678 303 bool setLEDBoost(uint8_t boost);
synvox 0:c04b49e0a678 304
synvox 0:c04b49e0a678 305 /* Proximity photodiode select */
synvox 0:c04b49e0a678 306 uint8_t getProxGainCompEnable();
synvox 0:c04b49e0a678 307 bool setProxGainCompEnable(uint8_t enable);
synvox 0:c04b49e0a678 308 uint8_t getProxPhotoMask();
synvox 0:c04b49e0a678 309 bool setProxPhotoMask(uint8_t mask);
synvox 0:c04b49e0a678 310
synvox 0:c04b49e0a678 311 /* Gesture threshold control */
synvox 0:c04b49e0a678 312 uint8_t getGestureEnterThresh();
synvox 0:c04b49e0a678 313 bool setGestureEnterThresh(uint8_t threshold);
synvox 0:c04b49e0a678 314 uint8_t getGestureExitThresh();
synvox 0:c04b49e0a678 315 bool setGestureExitThresh(uint8_t threshold);
synvox 0:c04b49e0a678 316
synvox 0:c04b49e0a678 317 /* Gesture LED, gain, and time control */
synvox 0:c04b49e0a678 318 uint8_t getGestureWaitTime();
synvox 0:c04b49e0a678 319 bool setGestureWaitTime(uint8_t time);
synvox 0:c04b49e0a678 320
synvox 0:c04b49e0a678 321 /* Gesture mode */
synvox 0:c04b49e0a678 322 uint8_t getGestureMode();
synvox 0:c04b49e0a678 323 bool setGestureMode(uint8_t mode);
synvox 0:c04b49e0a678 324
synvox 0:c04b49e0a678 325 /* Raw I2C Commands */
synvox 0:c04b49e0a678 326 bool wireWriteByte(uint8_t val);
synvox 0:c04b49e0a678 327 bool wireWriteDataByte(uint8_t reg, uint8_t val);
synvox 0:c04b49e0a678 328 //bool wireWriteDataBlock(uint8_t reg, uint8_t *val, unsigned int len);
synvox 0:c04b49e0a678 329 bool wireReadDataByte(uint8_t reg, uint8_t &val);
synvox 0:c04b49e0a678 330 int wireReadDataBlock(uint8_t reg, uint8_t *val, unsigned int len);
synvox 0:c04b49e0a678 331
synvox 0:c04b49e0a678 332 /* Members */
synvox 0:c04b49e0a678 333 I2C &apds_i2c;
synvox 0:c04b49e0a678 334 gesture_data_type gesture_data_;
synvox 0:c04b49e0a678 335 int gesture_ud_delta_;
synvox 0:c04b49e0a678 336 int gesture_lr_delta_;
synvox 0:c04b49e0a678 337 int gesture_ud_count_;
synvox 0:c04b49e0a678 338 int gesture_lr_count_;
synvox 0:c04b49e0a678 339 int gesture_near_count_;
synvox 0:c04b49e0a678 340 int gesture_far_count_;
synvox 0:c04b49e0a678 341 int gesture_state_;
synvox 0:c04b49e0a678 342 int gesture_motion_;
synvox 0:c04b49e0a678 343 };
synvox 0:c04b49e0a678 344
synvox 0:c04b49e0a678 345 #endif