Permalink
Browse files

Code companion server talks to arduino quack quack quack.

  • Loading branch information...
1 parent dd4c897 commit 70017f03e489329734bc4e1de8970b45a08ba446 Zachary Parmley committed Mar 22, 2013
Showing with 64 additions and 0 deletions.
  1. +64 −0 python/CodeCompanion.py
@@ -0,0 +1,64 @@
+# Main app, reads from the DB and arduio, acts accordingly.
+import sqlite3
+import json
+
+import serial
+
+from CodeCompanionView import CodeCompanionView
+
+class MessageHandler:
+ def __init__(self, arduino_connection):
+ self.arduino = arduino_connection
+
+ def handleMessage(self):
+ pass
+
+class TestifyMessageHandler(MessageHandler):
+ def handleMessage(self, id, data):
+ companion = CodeCompanionView()
+ companion.id = id
+ if data['success'] == False:
+ companion.screen = ['Oh nos! There', 'was a problem!']
+ companion.rgb = [0, 0, 255]
+ companion.appstate = 3 # Arbitrary, i dont know...
+ elif data['pass'] == False:
+ companion.screen = ['uh, failure mode', 'bb reports suck']
+ companion.rgb = [255, 0, 0]
+ companion.appstate = 2
+ elif data['pass'] == True:
+ companion.screen = ['Yaay! Hurrah!', 'BB is pleased.']
+ companion.rgb = [0, 255, 0]
+ companion.appstate = 1
+ self.arduino.write('%s\n' % companion.json)
+
+
+APPID_MESSAGE_HANDLERS = {
+ 1: TestifyMessageHandler,
+ 2: 'gitprecommit',
+ 3: 'trac',
+ 4: 'happymaker'
+}
+
+
+def get_arduino_connection(device):
+ return serial.Serial('/dev/tty.usbmodem1a1211', 9600, timeout=1)
+def get_db_connection():
+ db = sqlite3.connect('cc_messages.db')
+ return db
+
+
+
+arduino = get_arduino_connection('/dev/tty.usbmodem1a1211')
+cca_message = None
+while True:
+ cca_message = arduino.readline()
+ if cca_message:
+ # Handle message from arduino
+ pass
+ db = get_db_connection()
+ db_messages = db.execute('select id, appid, data_blob from cc_messages where new=1 order by created')
+ for message in db_messages:
+ handler = APPID_MESSAGE_HANDLERS.get(message[1], MessageHandler)(arduino)
+ handler.handleMessage(message[0], json.loads(message[2]))
+ db.execute('update cc_messages set new = 0 where id = %s' % message[0])
+ db.commit()

0 comments on commit 70017f0

Please sign in to comment.