Author: fmueller
Date: Tue Jul 20 08:13:35 2010
New Revision: 8969

URL: http://svn.slimdevices.com/jive?rev=8969&view=rev
Log:
Bug: 16365 
Description: Ambient light sensor: Reduce reading value to 500ms (was 100ms) 

Modified:
    
7.6/trunk/squeezeplay/src/squeezeplay_baby/share/applets/SqueezeboxBaby/SqueezeboxBabyApplet.lua

Modified: 
7.6/trunk/squeezeplay/src/squeezeplay_baby/share/applets/SqueezeboxBaby/SqueezeboxBabyApplet.lua
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay_baby/share/applets/SqueezeboxBaby/SqueezeboxBabyApplet.lua?rev=8969&r1=8968&r2=8969&view=diff
==============================================================================
--- 
7.6/trunk/squeezeplay/src/squeezeplay_baby/share/applets/SqueezeboxBaby/SqueezeboxBabyApplet.lua
 (original)
+++ 
7.6/trunk/squeezeplay/src/squeezeplay_baby/share/applets/SqueezeboxBaby/SqueezeboxBabyApplet.lua
 Tue Jul 20 08:13:35 2010
@@ -108,9 +108,10 @@
 
 -- Automatic brightness timer rate
 local BRIGHTNESS_REFRESH_RATE = 100                                            
-- was 500
+local BRIGHTNESS_READ_RATE_DIVIDER = 5                                         
-- This gives 2 times a seconds
 
 -- Lux Value Smoothing
-local MAX_SMOOTHING_VALUES = math.floor( 4000 / BRIGHTNESS_REFRESH_RATE)       
-- was 8
+local MAX_SMOOTHING_VALUES = math.floor( 4000 / (BRIGHTNESS_REFRESH_RATE * 
BRIGHTNESS_READ_RATE_DIVIDER))      -- was 8
 local luxSmooth = {}
 
 -- Maximum number of brightness levels up/down per run of the timer
@@ -121,6 +122,7 @@
 local brightCur = -1
 local brightTarget = -1
 local brightMin = MIN_BRIGHTNESS_LEVEL_INIT
+local brightReadRateDivider = 1
 
 
 function init(self)
@@ -316,6 +318,7 @@
        brightCur = MAX_BRIGHTNESS_LEVEL
        brightTarget = MAX_BRIGHTNESS_LEVEL
        brightMin = settings.brightnessMinimal
+       brightReadRateDivider = 1
 
        self.brightPrev = self:getBrightness()
        if self.brightPrev and self.brightPrev == 0 then
@@ -405,16 +408,26 @@
 end
 
 
+-- This function is called every 100 ms to make the
+--  brightness ramping up / down smoothly
 function doAutomaticBrightnessTimer(self)
-       local ambient = sysReadNumber(self, "ambient")
-
-       -- Use the table to smooth out ambient value spikes
-       table.insert(luxSmooth, ambient)
-       if( MAX_SMOOTHING_VALUES < #luxSmooth ) then
-               table.remove(luxSmooth, 1)
-       end
-
-       ambient = self:getSmoothedLux(luxSmooth)
+       -- But only read ambient light sensor value
+       --  every 500 ms to reduce load
+       if brightReadRateDivider > 1 then
+               brightReadRateDivider = brightReadRateDivider - 1
+       else
+               brightReadRateDivider = BRIGHTNESS_READ_RATE_DIVIDER
+
+               local luxvalue = sysReadNumber(self, "ambient")
+
+               -- Use the table to smooth out ambient value spikes
+               table.insert(luxSmooth, luxvalue)
+               if( MAX_SMOOTHING_VALUES < #luxSmooth ) then
+                       table.remove(luxSmooth, 1)
+               end
+       end
+
+       local ambient = self:getSmoothedLux(luxSmooth)
 
        --[[
        log:info("Ambient:      " .. tostring(ambient))
@@ -989,7 +1002,7 @@
                        if value > brightTarget then
                                self:setBrightness( value)
                        else
-                               self:setBrightness( brightTarget)
+                               self:setBrightness( math.floor( brightTarget))
                        end
 
                        -- done is true for 'go' and 'play' but we do not want 
to leave

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to