The VL6180X supports a reprogrammable I²C address. The device’s default I²C address can been changed after boot time. This allows multiple devices to be used on the same I²C bus. The VL6180X also support I²C auto-increment to reduce the time to read data from relevant proximity and ALS registers. For thresholds and interrupts, there are different modes of operation including: GPIO0 which is preconfigured as a module enable/disable which is how multiple VL6180X devices can be used on the same bus. Both GPIO0 and GPIO1 can be configured to output, active high or active low or Hi-Z after the VL6180X has completed its boot up sequence. The VL6180X does not store the GPIO configuration after power down. Additionally, there are four different interrupt modes of operation. The first one is New Sample Ready. In this mode, the device does a measurement and interrupts a host when the measurement is available, or if there is an error in the measurement. Second there is Low Threshold Mode. This can be used for either ranging or ALS. If the reported proximity or ALS measurement goes below the set threshold, it will interrupt the host. Next there is High Thresholds Mode. This can be used for either ranging or ALS. If the reported proximity or ALS measurement goes above the set threshold, it will interrupt the host. Finally, there is Out of Window Mode. This can be used for either ranging or ALS. If the reported proximity or ALS measurement goes outside the window specified by the low and high thresholds, it will then interrupt the host. The VL6180X supports atomic read and write, meaning that interrupt configurations, ranging and ALS thresholds, ALS integration times and ALS analog gains do not corrupt the measurement in progress. This feature is referred to as “Group Parameter Hold”. The VL6180X has an internal FIFO history of range and ALS measurements. The VL6180X can store 16 of the last ranging values and eight of the last ALS values inside of the device. This is useful for ALS algorithms or ranging gesture algorithms.