aboutsummaryrefslogtreecommitdiff
path: root/behaviors/Flasher.py
blob: 395d898ac35226d3e6e75c9cba7e0ecbcf0162c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

from operationscore.Behavior import *
import util.ColorOps as colorops
import pdb
class Flasher(Behavior):
    """Implements a pulsing/flashing behavior.
     Jim Salem 

     Args:
       Factor - The speed of flashing. Must be b/w 0 and 1.  Default is .95
    """
    def processResponse(self, sensorInputs, recursiveInputs):
        ret = []
        for response in sensorInputs:
            # Get the multiplier
            if self['Factor'] != None:
                factor = self['Factor']
            else:
                factor = 0.95
            # Initialize the first time
            if not 'FireflyStartColor' in response:
                response['FireflyValue'] = 1.0
                response['FireflyDir'] = 1
                response['FireflyStartColor'] = response['Color'];
            else:
                # Update the current value
                if response['FireflyDir'] == 1:
                    response['FireflyValue'] = response['FireflyValue'] * factor
                    if response['FireflyValue'] <= 0.01:
                        response['FireflyValue'] = 0.01
                        response['FireflyDir'] = 0
                else:
                    response['FireflyValue'] = response['FireflyValue'] / factor
                    if response['FireflyValue'] >= 1.0:
                        response['FireflyValue'] = 1.0
                        response['FireflyDir'] = 1

            # Compute the color
            response['Color'] = colorops.multiplyColor(response['FireflyStartColor'], response['FireflyValue'])
            ret.append(response)
        return (ret, []) #no direct ouput