diff options
author | rcoh <rcoh@mit.edu> | 2011-01-03 22:28:28 -0500 |
---|---|---|
committer | rcoh <rcoh@mit.edu> | 2011-01-03 22:28:28 -0500 |
commit | f5c29b39f3eef83227e3fb7c550d9b2922a19894 (patch) | |
tree | d8b1575b49762756ae1cbd152b9c5f51f3f93801 | |
parent | ba796403d111ffc3b29620647f38bc5541840ccb (diff) |
fixed a bug caused by util stuff. some new functionality, not all fully implemented.
-rw-r--r-- | LightInstallation.py | 3 | ||||
-rw-r--r-- | ResponseMover.py | 15 | ||||
-rw-r--r-- | behaviors/Accelerate.xml | 8 | ||||
-rw-r--r-- | behaviors/LoopAndDie.xml | 6 | ||||
-rw-r--r-- | behaviors/PixelDecay.xml | 9 | ||||
-rw-r--r-- | behaviors/RandomColor.xml | 8 | ||||
-rw-r--r-- | behaviors/RandomWalk.py | 5 | ||||
-rw-r--r-- | behaviors/RunningBehavior.xml | 8 | ||||
-rw-r--r-- | config/Outdoor.xml | 7 | ||||
-rw-r--r-- | inputs/RandomLocs.py | 13 | ||||
-rw-r--r-- | pixelmappers/SimpleMapper.py | 2 | ||||
-rw-r--r-- | renderers/IndoorRenderer.py | 4 | ||||
-rw-r--r-- | util/Geo.py | 6 | ||||
-rw-r--r-- | util/NetworkOps.py | 3 | ||||
-rw-r--r-- | util/PacketComposition.py | 2 |
15 files changed, 93 insertions, 6 deletions
diff --git a/LightInstallation.py b/LightInstallation.py index 01fea1c..c74926e 100644 --- a/LightInstallation.py +++ b/LightInstallation.py @@ -98,7 +98,8 @@ class LightInstallation: try: exec('from ' + module+'.'+className + ' import *') main_log.debug(module +'.' +className + 'imported') - except: + except Exception as inst: + pdb.set_trace() main_log.error('Error importing ' + module+'.'+'.className. Component not\ initialized.') continue #TODO: verify functions as expected diff --git a/ResponseMover.py b/ResponseMover.py new file mode 100644 index 0000000..718400d --- /dev/null +++ b/ResponseMover.py @@ -0,0 +1,15 @@ +from operationscore.Behavior import * +import util.ComponentRegistry as compReg +#ResponseMover is a scaffold for behaviors that spawn 'walkers' which act autonomously on input. +#Add a recursive hook to control the movement. +class ResponseMover(Behavior): + def processResponse(self, sensorInputs, recursiveInputs): + newResponses = sensorInputs + ret = [] + ret += newResponses + for recurInput in recursiveInputs: + outDict = dict(recurInput) + ret.append(outDict) + ret += newResponses + return (ret, ret) + diff --git a/behaviors/Accelerate.xml b/behaviors/Accelerate.xml new file mode 100644 index 0000000..2a3d7ac --- /dev/null +++ b/behaviors/Accelerate.xml @@ -0,0 +1,8 @@ +<Behavior> + <Class>behaviors.ModifyParam</Class> + <Args> + <ParamType>Sensor</ParamType> + <ParamName>StepSize</ParamName> + <ParamOp>{val}*1.05</ParamOp> + </Args> +</Behavior> diff --git a/behaviors/LoopAndDie.xml b/behaviors/LoopAndDie.xml new file mode 100644 index 0000000..af26562 --- /dev/null +++ b/behaviors/LoopAndDie.xml @@ -0,0 +1,6 @@ +<Behavior> + <Class>behaviors.RecursiveDecay</Class> + <Args> + <InitialResponseCount>70</InitialResponseCount> + </Args> +</Behavior> diff --git a/behaviors/PixelDecay.xml b/behaviors/PixelDecay.xml new file mode 100644 index 0000000..f9eee0d --- /dev/null +++ b/behaviors/PixelDecay.xml @@ -0,0 +1,9 @@ +<Behavior> + <Class>behaviors.DecayBehavior</Class> + <Args> + <DecayType>Exponential</DecayType> + <Coefficient>.01</Coefficient> + <z-index>0</z-index> + <RenderToScreen>False</RenderToScreen> + </Args> +</Behavior> diff --git a/behaviors/RandomColor.xml b/behaviors/RandomColor.xml new file mode 100644 index 0000000..afac09c --- /dev/null +++ b/behaviors/RandomColor.xml @@ -0,0 +1,8 @@ +<Behavior> + <Class>behaviors.ColorChangerBehavior</Class> + <Args> + <Id>colorchange</Id> + <z-index>0</z-index> + <RenderToScreen>False</RenderToScreen> + </Args> +</Behavior> diff --git a/behaviors/RandomWalk.py b/behaviors/RandomWalk.py new file mode 100644 index 0000000..8254430 --- /dev/null +++ b/behaviors/RandomWalk.py @@ -0,0 +1,5 @@ +from operationscore.Behavior import * +import util.ComponentRegistry as compReg +class RandomWalk(Behavior): + def processResponse(self, sensors, recursives): + diff --git a/behaviors/RunningBehavior.xml b/behaviors/RunningBehavior.xml new file mode 100644 index 0000000..2a7bf37 --- /dev/null +++ b/behaviors/RunningBehavior.xml @@ -0,0 +1,8 @@ +<Behavior> + <Class>behaviors.RunningBehavior</Class> + <Args> + <Id>running</Id> + <StepSize>1</StepSize> + <RenderToScreen>False</RenderToScreen> + </Args> +</Behavior> diff --git a/config/Outdoor.xml b/config/Outdoor.xml index f84f261..5018643 100644 --- a/config/Outdoor.xml +++ b/config/Outdoor.xml @@ -44,6 +44,12 @@ <InputElement Id="followmouse"> <InheritsFrom>inputs/MouseFollower.xml</InheritsFrom> </InputElement> + <InputElement> + <Class>inputs.RandomLocs</Class> + <Args> + <Id>randomLoc</Id> + </Args> + </InputElement> </InputConfiguration> <BehaviorConfiguration> <Behavior> @@ -85,6 +91,7 @@ <Id>runcolordecay</Id> <Inputs> <Id>pygame</Id> + <Id>randomLoc</Id> </Inputs> <ChainedBehaviors> <Id>colorchange</Id> diff --git a/inputs/RandomLocs.py b/inputs/RandomLocs.py new file mode 100644 index 0000000..d1ce1c7 --- /dev/null +++ b/inputs/RandomLocs.py @@ -0,0 +1,13 @@ +import util.TimeOps as clock +import random +import util.Geo as Geo +import util.Strings as Strings +from operationscore.Input import * +class RandomLocs(Input): + def inputInit(self): + self['LastEvent'] = clock.time() + def sensingLoop(self): #TODO: move to params + currentTime = clock.time() + if currentTime - self['LastEvent'] > 2000: + self.respond({Strings.LOCATION: Geo.randomLoc((50,50))}) + self['LastEvent'] = currentTime diff --git a/pixelmappers/SimpleMapper.py b/pixelmappers/SimpleMapper.py index bc51cf9..5d4dceb 100644 --- a/pixelmappers/SimpleMapper.py +++ b/pixelmappers/SimpleMapper.py @@ -23,7 +23,7 @@ class SimpleMapper(PixelMapper): #optimizations possible. This might be slow in the long run if pixelValid: ret.append((pixel, 1)) - except: + except Exception as exp: raise Exception('Bad event condition') return ret diff --git a/renderers/IndoorRenderer.py b/renderers/IndoorRenderer.py index 138383c..0ee566a 100644 --- a/renderers/IndoorRenderer.py +++ b/renderers/IndoorRenderer.py @@ -2,7 +2,7 @@ from operationscore.Renderer import * import util.PacketComposition as composer import util.NetworkOps as network import socket,pdb -port = 6038 +sock_port = 6038 #Renderer for a Specific Light System. class IndoorRenderer(Renderer): def initRenderer(self): @@ -26,7 +26,7 @@ class IndoorRenderer(Renderer): (ip, port) = self.stripLocations[stripId] if not ip in self.sockets: #do we have a socket to this #strip? if not, spin off a new one - self.sockets[ip] = network.getConnectedSocket(ip,port) + self.sockets[ip] = network.getConnectedSocket(ip,sock_port) packet = composer.composePixelStripPacket(pixelStrip, port) self.sockets[ip].send(packet, 0x00) #pdb.set_trace() diff --git a/util/Geo.py b/util/Geo.py index 885c585..a9243de 100644 --- a/util/Geo.py +++ b/util/Geo.py @@ -1,6 +1,7 @@ #Geometry code import math from bisect import * +import random def pointWithinBoundingBox(point, bb): #this could be in 4 lines, but I'm lazy. return sum([(point[i % 2] <= bb[i]) == (i>1) for i in range(4)]) == 4 print pointWithinBoundingBox((118,21), (10,8,298,42)) @@ -13,3 +14,8 @@ def gaussian(x,height,center,width): return a*math.exp(-((x-b)**2)/(2*c**2)) def dist(l1, l2): return math.sqrt(sum([(l1[i]-l2[i])**2 for i in range(len(l1))])) +def randomLoc(boundingBox): #TODO: make less shitty + loc = [] + loc.append(random.randint(0, boundingBox[0])) + loc.append(random.randint(0, boundingBox[1])) + return tuple(loc) diff --git a/util/NetworkOps.py b/util/NetworkOps.py index 2fa531e..6c50c6d 100644 --- a/util/NetworkOps.py +++ b/util/NetworkOps.py @@ -4,7 +4,8 @@ def getConnectedSocket(ip,port): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: sock.connect((ip, port)) + return sock except Exception as inst: main_log.error('Network down. All network based renderers and sensors will not function.', inst) - return sock + print (ip, port) diff --git a/util/PacketComposition.py b/util/PacketComposition.py index 4c34fa1..73eefff 100644 --- a/util/PacketComposition.py +++ b/util/PacketComposition.py @@ -6,6 +6,7 @@ DEEPMAGIC = 0xc001d00d MAGICHASH = 0x69000420 PORTOUT = 0x0108 UNI = 0 +import pdb kinetDict = {'flags': 0, 'startcode': 0, 'pad':0} def composePixelStripData(pixelStrip): packet = bytearray() @@ -44,7 +45,6 @@ def kinetPortOut(): def kinetPortOutPayload(argDict): payload = bytearray() payload.extend(struct.pack('B', argDict['port'])) - payload.append(0x00) #somepadding? lolwtf. payload.extend(struct.pack('H', argDict['flags'])) #payload.append(0x00) #somepadding? lolwtf. payload.extend(struct.pack('H', argDict['len'])) |