Author: fmueller
Date: Tue Jul 20 08:18:20 2010
New Revision: 8970
URL: http://svn.slimdevices.com/jive?rev=8970&view=rev
Log:
Bug: 16365
Description: Ambient light sensor: Reduce reading value to 500ms (was 100ms)
Modified:
7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua
Modified:
7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua
URL:
http://svn.slimdevices.com/jive/7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua?rev=8970&r1=8969&r2=8970&view=diff
==============================================================================
---
7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua
(original)
+++
7.6/trunk/squeezeplay/src/squeezeplay_fab4/share/applets/SqueezeboxFab4/SqueezeboxFab4Applet.lua
Tue Jul 20 08:18:20 2010
@@ -76,9 +76,11 @@
-- Timer values
local BRIGHTNESS_REFRESH_RATE = 100
-- 100ms (was 500ms)
local BRIGHTNESS_OVERRIDE = math.floor( 10 * 1000 / BRIGHTNESS_REFRESH_RATE)
-- 10s (was 6 * 500ms = 3s)
+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)
-- 40 (was 8)
+local MAX_SMOOTHING_VALUES = math.floor( 4000 / (BRIGHTNESS_REFRESH_RATE *
BRIGHTNESS_READ_RATE_DIVIDER)) -- 40 (was 8)
local luxSmooth = {}
-- Maximum number of brightness levels up/down per run of the timer
@@ -94,6 +96,7 @@
local brightCur = MAX_BRIGHTNESS_LEVEL
local brightTarget = MAX_BRIGHTNESS_LEVEL
local brightMin = MIN_BRIGHTNESS_LEVEL + 25;
+local brightReadRateDivider = 1
-- brightOverride == 0 -> IDLE
-- brightOverride > 0 -> ACTIVE (Someone is touching the screen or using a
remote)
@@ -218,6 +221,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
@@ -326,32 +330,42 @@
end
+-- This function is called every 100 ms to make the
+-- brightness ramping up / down smoothly
function doAutomaticBrightnessTimer(self)
- local f = io.open(AMBIENT_SYSPATH .. "lux")
- local lux = f:read("*all")
- f:close()
-
- f = io.open(AMBIENT_SYSPATH .. "adc")
- local adc = f:read("*all")
- f:close()
-
- local luxvalue = tonumber(string.sub(lux, 0, string.len(lux)-1))
-
- local s, e = string.find(adc, ",")
- local valCh0 = tonumber(string.sub(adc, 0, s-1))
-
- -- If channel 0 (visible and ir light) is at maximum
- -- the calculated lux value isn't correct anymore
- -- and goes down again. Use max lux value in this case.
- if (luxvalue > STATIC_LUX_MAX) or (valCh0 == 65535) then
- -- Fix calculation for very high lux values
- luxvalue = STATIC_LUX_MAX
- end
-
- -- Use the table to smooth out ambient value spikes
- table.insert(luxSmooth, luxvalue)
- if( MAX_SMOOTHING_VALUES < #luxSmooth ) then
- table.remove(luxSmooth, 1)
+ -- 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 f = io.open(AMBIENT_SYSPATH .. "lux")
+ local lux = f:read("*all")
+ f:close()
+
+ f = io.open(AMBIENT_SYSPATH .. "adc")
+ local adc = f:read("*all")
+ f:close()
+
+ local luxvalue = tonumber(string.sub(lux, 0, string.len(lux)-1))
+
+ local s, e = string.find(adc, ",")
+ local valCh0 = tonumber(string.sub(adc, 0, s-1))
+
+ -- If channel 0 (visible and ir light) is at maximum
+ -- the calculated lux value isn't correct anymore
+ -- and goes down again. Use max lux value in this case.
+ if (luxvalue > STATIC_LUX_MAX) or (valCh0 == 65535) then
+ -- Fix calculation for very high lux values
+ luxvalue = STATIC_LUX_MAX
+ end
+
+ -- 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)
@@ -574,7 +588,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