diff options
author | rcoh <rcoh@mit.edu> | 2011-01-28 16:24:21 -0500 |
---|---|---|
committer | rcoh <rcoh@mit.edu> | 2011-01-28 16:24:21 -0500 |
commit | bd1119e82ff9f4bd8835ed6d3934f156a6da8b23 (patch) | |
tree | c97435c4e2ccf74610ba3875e277ca9f7cdea6d8 | |
parent | ef1abfa913498e02a4ece3be4be45d2f03e47d05 (diff) |
Fixed TCPInput bug.
-rw-r--r-- | config/6thFloorOSC.xml | 67 | ||||
-rw-r--r-- | inputs/TCPInput.py | 14 |
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) |