aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar rcoh <rcoh@mit.edu>2011-01-03 22:28:28 -0500
committerGravatar rcoh <rcoh@mit.edu>2011-01-03 22:28:28 -0500
commitf5c29b39f3eef83227e3fb7c550d9b2922a19894 (patch)
treed8b1575b49762756ae1cbd152b9c5f51f3f93801
parentba796403d111ffc3b29620647f38bc5541840ccb (diff)
fixed a bug caused by util stuff. some new functionality, not all fully implemented.
-rw-r--r--LightInstallation.py3
-rw-r--r--ResponseMover.py15
-rw-r--r--behaviors/Accelerate.xml8
-rw-r--r--behaviors/LoopAndDie.xml6
-rw-r--r--behaviors/PixelDecay.xml9
-rw-r--r--behaviors/RandomColor.xml8
-rw-r--r--behaviors/RandomWalk.py5
-rw-r--r--behaviors/RunningBehavior.xml8
-rw-r--r--config/Outdoor.xml7
-rw-r--r--inputs/RandomLocs.py13
-rw-r--r--pixelmappers/SimpleMapper.py2
-rw-r--r--renderers/IndoorRenderer.py4
-rw-r--r--util/Geo.py6
-rw-r--r--util/NetworkOps.py3
-rw-r--r--util/PacketComposition.py2
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']))