aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar rcoh <rcoh@mit.edu>2011-01-28 16:24:21 -0500
committerGravatar rcoh <rcoh@mit.edu>2011-01-28 16:24:21 -0500
commitbd1119e82ff9f4bd8835ed6d3934f156a6da8b23 (patch)
treec97435c4e2ccf74610ba3875e277ca9f7cdea6d8
parentef1abfa913498e02a4ece3be4be45d2f03e47d05 (diff)
Fixed TCPInput bug.
-rw-r--r--config/6thFloorOSC.xml67
-rw-r--r--inputs/TCPInput.py14
2 files changed, 69 insertions, 12 deletions
diff --git a/config/6thFloorOSC.xml b/config/6thFloorOSC.xml
index 2215688..aa7a07d 100644
--- a/config/6thFloorOSC.xml
+++ b/config/6thFloorOSC.xml
@@ -60,14 +60,14 @@
<RefreshInterval>10</RefreshInterval>
</Args>
</InputElement>
- <!--<InputElement>
+ <InputElement>
<Class>inputs.TCPInput</Class>
<Args>
<Id>tcp</Id>
<Port>20120</Port>
<RefreshInterval>10</RefreshInterval>
</Args>
- </InputElement>-->
+ </InputElement>
<InputElement Id="followmouse">
<InheritsFrom>inputs/MouseFollower.xml</InheritsFrom>
</InputElement>
@@ -79,15 +79,60 @@
</InputElement>
</InputConfiguration>
<BehaviorConfiguration>
- <Behavior>
- <Class>behaviors.EchoBehavior</Class>
- <Args>
- <Id>echo</Id>
- <z-index>0</z-index>
- <RenderToScreen>False</RenderToScreen>
- </Args>
- </Behavior>
- <Behavior>
+ <Behavior>
+ <Class>behaviors.EchoBehavior</Class>
+ <Args>
+ <Id>echo</Id>
+ <z-index>0</z-index>
+ <RenderToScreen>False</RenderToScreen>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.BehaviorChain</Class>
+ <Args>
+ <Id>moveanddecay</Id>
+ <Inputs>
+ <Id>tcp</Id>
+ </Inputs>
+ <ChainedBehaviors>
+ <Id>move</Id>
+ <Id>decay</Id>
+ </ChainedBehaviors>
+ <RenderToScreen>True</RenderToScreen>
+ <Mapper>gaussmap</Mapper>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.MoveBehavior</Class>
+ <Args>
+ <Id>move</Id>
+ <XStep>3</XStep>
+ <YStep>3</YStep>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.MobileShakeBehavior</Class>
+ <Args>
+ <Id>mobileshake</Id>
+ <SizeMult>3</SizeMult>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.BehaviorChain</Class>
+ <Args>
+ <Id>shakeanddecay</Id>
+ <Inputs>
+ <Id>tcp</Id>
+ </Inputs>
+ <ChainedBehaviors>
+ <Id>mobileshake</Id>
+ <Id>slowdecay</Id>
+ </ChainedBehaviors>
+ <RenderToScreen>True</RenderToScreen>
+ <Mapper>simplemap</Mapper>
+ </Args>
+ </Behavior>
+ <Behavior>
<Args>
<Id>sixaxis</Id>
</Args>
diff --git a/inputs/TCPInput.py b/inputs/TCPInput.py
index 17ea7e6..51a6677 100644
--- a/inputs/TCPInput.py
+++ b/inputs/TCPInput.py
@@ -4,6 +4,7 @@ from operationscore.Input import *
import socket, json, time
import logging as main_log
import string
+from select import select
class TCPInput(Input):
"""TCPInput is a input to receive input on a TCP port. In its current incarnation, it parses
@@ -20,9 +21,20 @@ class TCPInput(Input):
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.sock.bind((self.HOST, self.PORT))
self.sock.listen(1)
- (self.conn, self.address) = self.sock.accept()
+
+ isreadable=select([self.sock],[],[], 0)[0]
+ self.conn = None
+ if isreadable:
+ (self.conn, self.address) = self.sock.accept()
def sensingLoop(self):
+ if self.conn == None:
+ isreadable=select([self.sock],[],[], 0)[0]
+ if isreadable:
+ (self.conn, self.address) = self.sock.accept()
+ else:
+ return
+
data = self.conn.recv(self.BUFFER_SIZE)
main_log.debug('Incoming data', data)