Remove old demo code (no longer used)

Change-Id: I6976a28b57258cc451bac410767fd3acf2fb8d49
Reviewed-on: https://forge.frm2.tum.de/review/17267
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
Enrico Faulhaber 2018-02-07 15:54:28 +01:00
parent 5621b17ee4
commit 09df63fdec
5 changed files with 0 additions and 548 deletions

View File

@ -1,40 +0,0 @@
import fileinput
class LineHandler():
def __init__(self, *args, **kwargs):
pass
def send_line(self, line):
print " ", line
def handle_line(self, line):
'''
test: simple echo handler
'''
self.send_line("> " + line)
class LineServer():
def __init__(self, isfile, lineHandlerClass):
self.lineHandlerClass = lineHandlerClass
self.isfile = isfile
def loop(self):
handler = self.lineHandlerClass()
while True:
try:
if self.isfile:
line = raw_input("")
print "> " + line
else:
line = raw_input("> ")
except EOFError:
return
handler.handle_line(line)
if __name__ == "__main__":
server = LineServer("localhost", 9999, LineHandler)
server.loop()

View File

@ -1,330 +0,0 @@
# SECoP demo syntax simulation
#
# Author: Markus Zolliker <markus.zolliker@psi.ch>
#
# Input from a file for test purposes:
#
# python -m demo_server f < test.txt
#
# Input from commandline:
#
# python -m demo_server
#
# Input from TCP/IP connections:
#
# python -m demo_server <port>
import json
from collections import OrderedDict
from fnmatch import fnmatch
from datetime import datetime
import sys
if len(sys.argv) <= 1:
port = 0
import cmd_lineserver as lineserver
elif sys.argv[1] == "f":
port = 1
import cmd_lineserver as lineserver
else:
port = int(sys.argv[1])
import tcp_lineserver as lineserver
class SecopError(Exception):
def __init__(self, message, text):
Exception.__init__(self, message, text)
class UnknownModuleError(SecopError):
def __init__(self, message, args):
SecopError.__init__(self, "NoSuchModule", args[0])
class UnknownParamError(SecopError):
def __init__(self, message, args):
SecopError.__init__(self, "NoSuchParam", "%s:%s" % args)
class UnknownPropError(SecopError):
def __init__(self, message, args):
SecopError.__init__(self, "NoSuchProperty", "%s:%s:%s" % args)
class SyntaxError(SecopError):
def __init__(self, message):
SecopError.__init__(self, "SyntaxError", message)
class OtherError(SecopError):
def __init__(self, message):
SecopError.__init__(self, "OtherError", message)
def encode(input):
inp = str(input)
enc = repr(inp)
if inp.find(';') >= 0 or inp != enc[1:-1]:
return enc
return inp
def gettype(obj):
typ = str(type(obj).__name__)
if typ == "unicode":
typ = "string"
return typ
def wildcard(dictionary, pattern):
list = []
if pattern == "":
pattern = "."
for p in pattern.split(","):
if p[-1] == "*":
if p[:-1].find("*") >= 0:
raise SyntaxError("illegal wildcard pattern %s" % p)
for key in dictionary:
if key.startswith(p[:-1]):
list.append(key)
elif p in dictionary:
list.append(p)
else:
raise KeyError(pattern)
return list
class SecopClientProps(object):
def __init__(self):
self.reply_items = {".": "t", "writable": 1}
self.compact_output = {".": 0, "writable": 1}
class SecopLineHandler(lineserver.LineHandler):
def __init__(self, *args, **kwargs):
lineserver.LineHandler.__init__(self, *args, **kwargs)
self.props = SecopClientProps()
def handle_line(self, msg):
try:
if msg[-1:] == "\r": # strip CR at end (for CRLF)
msg = msg[:-1]
if msg[:1] == "+":
self.subscribe(msg[1:].split(":"))
elif msg[:1] == "-":
self.unsubscribe(msg[1:].split(":"))
elif msg[:1] == "!":
self.list(msg[1:])
else:
j = msg.find("=")
if j >= 0:
self.write(msg[0:j], msg[j + 1:])
else:
self.read(msg)
except SecopError as e:
self.send_line("~%s~ %s" % (e.args[0], e.args[1]))
self.send_line("")
def get_device(self, d):
if d == "":
d = "."
if d == ".":
return self.props.__dict__
try:
return secNodeDict[d]
except KeyError:
raise UnknownModuleError("", (d))
def get_param(self, d, p):
if p == "":
p = "."
try:
return self.get_device(d)[p]
except KeyError:
raise UnknownParamError("", (d, p))
def get_prop(self, d, p, y):
if y == "":
y = "."
try:
paramDict = self.get_param(d, p)
return (paramDict, paramDict[y])
except KeyError:
raise UnknownPropertyError("", (d, p, y))
def clear_output_path(self):
# used for compressing only
self.outpath = [".", ".", "."]
try:
self.compact = self.props.compact_output["."] != 0
except KeyError:
self.compact = False
def output_path(self, d, p=".", y="."):
# compose path from arguments. compress if compact is True
if d == self.outpath[0]:
msg = ":"
else:
msg = d + ":"
if self.compact:
self.outpath[0] = d
self.outpath[1] = "."
self.outpath[2] = "."
if p == self.outpath[1]:
msg += ":"
else:
msg += p + ":"
if self.compact:
self.outpath[1] = p
self.outpath[2] = "."
if y == "" or y == self.outpath[2]:
while msg[-1:] == ":":
msg = msg[:-1]
else:
msg += y
if self.compact:
self.outpath[2] = y
return msg
def write(self, pathArg, value):
self.clear_output_path()
path = pathArg.split(":")
while len(path) < 3:
path.append("")
d, p, y = path
parDict = self.get_param(d, p)
if (y != "." and y != "") or not parDict.get("writable", 0):
self.send_line("? %s is not writable" % self.output_path(d, p, y))
typ = type(parDict["."])
try:
val = (typ)(value)
except ValueError:
raise SyntaxError("can not convert '%s' to %s" %
(value, gettype(value)))
parDict["."] = val
parDict["t"] = datetime.utcnow()
self.send_line(self.output_path(d, p, ".") +
"=" + encode(parDict["."]))
def read(self, pathArg):
self.clear_output_path()
path = pathArg.split(":")
if len(path) > 3:
raise SyntaxError("path may only contain 3 elements")
while len(path) < 3:
path.append("")
# first collect a list of matched properties
list = []
try:
devList = wildcard(secNodeDict, path[0])
except KeyError as e:
raise UnknownModuleError("", (e.message))
for d in devList:
devDict = secNodeDict[d]
try:
parList = wildcard(devDict, path[1])
except KeyError as e:
raise UnknownParamError("", (d, e.message))
for p in parList:
parDict = devDict[p]
try:
propList = wildcard(parDict, path[2])
except KeyError as e:
raise UnknownPropError("", (d, p, e.message))
for y in propList:
list.append((d, p, y))
# then, if no error happened, write out the messages
try:
replyitems = self.props.reply_items["."]
replyitems = replyitems.split(",")
except KeyError:
replyitems = []
for item in list:
d, p, y = item
paramDict = secNodeDict[d][p]
if path[2] == "":
msg = self.output_path(d, p, "") + "=" + encode(paramDict["."])
for y in replyitems:
if y == ".":
continue # do not show the value twice
try:
msg += ";" + y + "=" + encode(paramDict[y])
except KeyError:
pass
else:
msg = self.output_path(d, p, y) + "=" + encode(paramDict[y])
self.send_line(msg)
def list(self, pathArg):
self.clear_output_path()
path = pathArg.split(":")
# first collect a list of matched items
list = []
try:
devList = wildcard(secNodeDict, path[0])
except KeyError as e:
raise UnknownModuleError("", (e.message))
for d in devList:
devDict = secNodeDict[d]
if len(path) == 1:
list.append((d, ".", "."))
else:
try:
parList = wildcard(devDict, path[1])
except KeyError as e:
raise UnknownParamError("", (d, e.message))
for p in parList:
parDict = devDict[p]
if len(path) == 2:
list.append((d, p, "."))
else:
try:
propList = wildcard(parDict, path[2])
except KeyError as e:
raise UnknownPropError("", (d, p, e.message))
for y in propList:
list.append((d, p, y))
# then, if no error happened, write out the items
for item in list:
d, p, y = item
self.send_line(self.output_path(d, p, y))
def subscribe(self, pathArg):
raise OtherError("subscribe unimplemented")
def unsubscribe(self, pathArg):
raise OtherError("unsubscribe unimplemented")
if port <= 1:
server = lineserver.LineServer(port, SecopLineHandler)
else:
server = lineserver.LineServer("localhost", port, SecopLineHandler)
secNodeDict = json.load(open("secnode.json", "r"),
object_pairs_hook=OrderedDict)
#json.dump(secNodeDict, open("secnode_out.json", "w"), indent=2, separators=(",",":"))
for d in secNodeDict:
devDict = secNodeDict[d]
for p in devDict:
parDict = devDict[p]
try:
parDict["type"] = gettype(parDict["."])
except KeyError:
print d, p, " no '.' (value) property"
continue
parDict["t"] = datetime.utcnow()
server.loop()

View File

@ -1,104 +0,0 @@
{
"ts":{
".":{
".":9.887,
"meaning":"temperature",
"unit":"K",
"description":"VTI sensor (15 Tesla magnet)\ncalibration: X28611"
},
"status":{
".":0
},
"target":{
".":10.0,
"writable":1,
"unit":"K"
},
"ramp":{
".":0.0,
"writable":1,
"unit":"K/min"
},
"use_ramp":{
".":0
},
"set_point":{
".":10.0,
"unit":"K"
},
"heater_power":{
".":0.154,
"unit":"W"
},
"raw_sensor":{
".":1876.3,
"unit":"Ohm"
}
},
"mf":{
".":{
".":5.13,
"meaning":"magnetic_field",
"unit":"T",
"description":"magnetic field (15 Tesla magnet)"
},
"status":{
".":0,
"value_names":"0:idle,1:busy,2:error"
},
"target":{
".":14.9,
"writable":1,
"unit":"T"
},
"ramp":{
".":0.4,
"writable":1,
"unit":"T/min"
},
"set_point":{
".":5.13,
"unit":"T"
},
"persistent_mode":{
".":0
},
"switch_heater":{
".":1
}
},
"tc1":{
".":{
".":2.23,
"unit":"K",
"description":"top coil (15 Tesla magnet)\ncalibration: X30906"
},
"status":{
".":0
},
"raw_sensor":{
".":5434.0,
"unit":"Ohm"
}
},
"tc2":{
".":{
".":2.311,
"unit":"K",
"description":"bottom coil (15 Tesla magnet)\ncalibration: C103"
},
"status":{
".":0
},
"raw_sensor":{
".":4834.5,
"unit":"Ohm"
}
},
"label":{
".":{
".": "test;test",
"writable": 1
}
}
}

View File

@ -1,61 +0,0 @@
import asyncore
import socket
class LineHandler(asyncore.dispatcher_with_send):
def __init__(self, sock):
self.buffer = ""
asyncore.dispatcher_with_send.__init__(self, sock)
self.crlf = 0
def handle_read(self):
data = self.recv(8192)
if data:
parts = data.split("\n")
if len(parts) == 1:
self.buffer += data
else:
self.handle_line(self.buffer + parts[0])
for part in parts[1:-1]:
if part[-1] == "\r":
self.crlf = True
part = part[:-1]
else:
self.crlf = False
self.handle_line(part)
self.buffer = parts[-1]
def send_line(self, line):
self.send(line + ("\r\n" if self.crlf else "\n"))
def handle_line(self, line):
'''
test: simple echo handler
'''
self.send_line("> " + line)
class LineServer(asyncore.dispatcher):
def __init__(self, host, port, lineHandlerClass):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind((host, port))
self.listen(5)
self.lineHandlerClass = lineHandlerClass
def handle_accept(self):
pair = self.accept()
if pair is not None:
sock, addr = pair
print "Incoming connection from %s" % repr(addr)
handler = self.lineHandlerClass(sock)
def loop(self):
asyncore.loop()
if __name__ == "__main__":
server = LineServer("localhost", 9999, LineHandler)
server.loop()

View File

@ -1,13 +0,0 @@
:reply_items=
ts
mf
tc1
*
mf:*
mf:target=12
mf:*
mf:target:*
:reply_items=t
*
!*
*:*:*