Skip to content

Instantly share code, notes, and snippets.

@fredyr
Last active August 29, 2015 14:08
Show Gist options
  • Save fredyr/efd89e98e29210434367 to your computer and use it in GitHub Desktop.
Save fredyr/efd89e98e29210434367 to your computer and use it in GitHub Desktop.
import socket
import csv
def load_params():
with open('params.csv', 'rb') as f:
reader = csv.reader(f, delimiter=';', quoting=csv.QUOTE_NONE)
# Drop first two rows (crap+headers)
rows = [row for row in reader if len(row) > 15][2:]
# print rows
defaults = {r[4]: r[15] for r in rows}
print defaults
# names[5] = "D 80:4T/Ta";
# names[4] = "D 120:4T/Ta";
# names[3] = "D 200:4T/Ta";
# override model id since, tesira can only be 3-5
defaults["0x3"] = "5"
return defaults
params = load_params()
def peek(addr, num):
if num == 1:
s = params[addr]
else:
s = (" 0" * num).strip()
return "+OK \"data\":["+ s +"]\n"
# "LGAmp1" peek 0x3 1
# [2014-05-28T08:55:12] LGAmp1 peek 0x60005 1
# [2014-05-28T08:55:12] OK "data":[0] "result":0
def mon():
return "+OK \"value\":[112132097 257 16843008 257 16843008 257 16843008 257 16843008 2007541760 67180034 0 0 0 0]\n"
def cmd(str):
parts = str.split()
cmd_type = parts[1]
if cmd_type == "peek":
return peek(parts[2], int(parts[3]))
if cmd_type == "get" and parts[2] == "ampPower":
return "+OK \"value\":true\n"
if cmd_type == "get" and parts[2] == "monitorData":
return mon()
# print cmd_type
return "+OK \"value\":\"Fejkamp1\"\n"
host = ''
port = 23
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host,port))
s.listen(backlog)
print "Starting server on port " + str(port)
c, address = s.accept()
while 1:
data = c.recv(size)
print data
c.send(cmd(data))
# c.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment