diff light8/ExternalInput.py @ 0:45b12307c695

Initial revision
author drewp
date Wed, 03 Jul 2002 09:37:57 +0000
parents
children 0969d8a6729d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/light8/ExternalInput.py	Wed Jul 03 09:37:57 2002 +0000
@@ -0,0 +1,40 @@
+import thread, SocketServer, socket
+
+
+currentlevels = [0,0,0,0]
+
+
+class NetSliderHandler(SocketServer.StreamRequestHandler):
+    def handle(self):
+        data = self.rfile.readline(1000)
+        currentlevels[:] = [round(self.bounds(float(x)/255),3) for x in list(data.split())]
+    def bounds(self,x):
+        # the last .1 both ways shall not do anything
+        x=x*1.1-.05
+        x=min(1,max(0,x))
+        return x
+
+def start_server(levelstorage=0):
+    server = SocketServer.TCPServer(
+        ('', socket.getservbyname('rlslider', 'tcp')), 
+        NetSliderHandler)
+    server.serve_forever()
+
+class ExternalSliders:
+    def __init__(self, level_storage=[]):
+        self.level_storage = level_storage
+        self.spawn_server()
+    def test(self):
+        'Store fake inputs to test operations'
+        pass
+    def spawn_server(self):
+        pass
+        # thread.start_new_thread(start_server, (self.update))
+    def update(self, *args):
+        self.level_storage[:] = args
+    def get_levels(self):
+        return currentlevels
+#        import math, time
+#        return [max(0, math.sin(time.time() + i)) for i in range(4)] # bogus
+            
+        # return self.level_storage