@@ -230,8 +230,24 @@ def isLightAvailable(self):
230230
231231 return val == APDS9960_BIT_AVALID
232232
233+ def _ensure_light_enabled (self ):
234+ enable = self .getMode ()
235+ if not (enable & (1 << APDS9960_MODE_AMBIENT_LIGHT )) or not (enable & 1 ):
236+ self .enableLightSensor (interrupts = False )
237+ for _ in range (50 ):
238+ if self .isLightAvailable ():
239+ return
240+ sleep_ms (10 )
241+
242+ def _ensure_proximity_enabled (self ):
243+ enable = self .getMode ()
244+ if not (enable & (1 << APDS9960_MODE_PROXIMITY )) or not (enable & 1 ):
245+ self .enableProximitySensor (interrupts = False )
246+ sleep_ms (50 )
247+
233248 # reads the ambient (clear) light level as a 16-bit value
234249 def readAmbientLight (self ):
250+ self ._ensure_light_enabled ()
235251 # read value from clear channel, low byte register
236252 low = self ._read_reg (APDS9960_REG_CDATAL )
237253
@@ -242,6 +258,7 @@ def readAmbientLight(self):
242258
243259 # reads the red light level as a 16-bit value
244260 def readRedLight (self ):
261+ self ._ensure_light_enabled ()
245262 # read value from red channel, low byte register
246263 low = self ._read_reg (APDS9960_REG_RDATAL )
247264
@@ -252,6 +269,7 @@ def readRedLight(self):
252269
253270 # reads the green light level as a 16-bit value
254271 def readGreenLight (self ):
272+ self ._ensure_light_enabled ()
255273 # read value from green channel, low byte register
256274 low = self ._read_reg (APDS9960_REG_GDATAL )
257275
@@ -262,6 +280,7 @@ def readGreenLight(self):
262280
263281 # reads the blue light level as a 16-bit value
264282 def readBlueLight (self ):
283+ self ._ensure_light_enabled ()
265284 # read value from blue channel, low byte register
266285 low = self ._read_reg (APDS9960_REG_BDATAL )
267286
@@ -276,6 +295,7 @@ def readBlueLight(self):
276295
277296 # reads the proximity level as an 8-bit value
278297 def readProximity (self ):
298+ self ._ensure_proximity_enabled ()
279299 return self ._read_reg (APDS9960_REG_PDATA )
280300
281301 # *******************************************************************************
0 commit comments