fix style issues
This commit is contained in:
parent
c1bf7fd13a
commit
77d01ca675
100
src/CmdServer.py
100
src/CmdServer.py
@ -8,7 +8,8 @@ import RegisterDatapoint
|
|||||||
import logging
|
import logging
|
||||||
import Converters
|
import Converters
|
||||||
|
|
||||||
class CmdInterpreterException(ValueError):
|
|
||||||
|
class CmdInterpreterException(ValueError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
self.registers = registers
|
self.registers = registers
|
||||||
self.prompt = "test8> "
|
self.prompt = "test8> "
|
||||||
self.intro = "test8 admin interface"
|
self.intro = "test8 admin interface"
|
||||||
self.splitterRe = re.compile('\s+')
|
self.splitterRe = re.compile(r'\s+')
|
||||||
self.logger = logging.getLogger('CmdInterpreter')
|
self.logger = logging.getLogger('CmdInterpreter')
|
||||||
|
|
||||||
def onecmd(self, line):
|
def onecmd(self, line):
|
||||||
@ -50,15 +51,14 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
self.stdout.write(text)
|
self.stdout.write(text)
|
||||||
self.stdout.write("\n\r")
|
self.stdout.write("\n\r")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def __listConverterNames(self):
|
def __listConverterNames(self):
|
||||||
return [name for name in Converters.Converters]
|
return [name for name in Converters.Converters]
|
||||||
|
|
||||||
def do_add_hr(self, arg):
|
def do_add_hr(self, arg):
|
||||||
try:
|
try:
|
||||||
(label, unit, address, count, scanrate, readTopic, writeTopic, feedbackTopic, converter) =
|
(label, unit, address, count,
|
||||||
self.splitterRe.split(arg)
|
scanrate, readTopic, writeTopic,
|
||||||
|
feedbackTopic, converter) = self.splitterRe.split(arg)
|
||||||
self.__println("Label: {0}".format(label))
|
self.__println("Label: {0}".format(label))
|
||||||
self.__println("Unit: {0}".format(unit))
|
self.__println("Unit: {0}".format(unit))
|
||||||
self.__println("Address: {0}".format(address))
|
self.__println("Address: {0}".format(address))
|
||||||
@ -81,14 +81,14 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
address = parseIntArbitraryBase(address)
|
address = parseIntArbitraryBase(address)
|
||||||
count = parseIntArbitraryBase(count)
|
count = parseIntArbitraryBase(count)
|
||||||
scanrate = float(scanrate)
|
scanrate = float(scanrate)
|
||||||
r = RegisterDatapoint.HoldingRegisterDatapoint(label=label,
|
r = RegisterDatapoint.HoldingRegisterDatapoint(label=label,
|
||||||
unit=unit,
|
unit=unit,
|
||||||
address=address,
|
address=address,
|
||||||
count=count,
|
count=count,
|
||||||
scanRate=datetime.timedelta(seconds=scanrate),
|
scanRate=datetime.timedelta(seconds=scanrate),
|
||||||
publishTopic=readTopic,
|
publishTopic=readTopic,
|
||||||
subscribe=writeTopic,
|
subscribe=writeTopic,
|
||||||
feedbackTopic=feedbackTopic,
|
feedbackTopic=feedbackTopic,
|
||||||
converter=converter)
|
converter=converter)
|
||||||
self.registers.append(r)
|
self.registers.append(r)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
@ -112,9 +112,9 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
self.__println("<WriteTopic> Topic to be subscribe to receive data to be")
|
self.__println("<WriteTopic> Topic to be subscribe to receive data to be")
|
||||||
self.__println(" written")
|
self.__println(" written")
|
||||||
self.__println("<FeedbackTopic> Topic to publish feedback after a write process,")
|
self.__println("<FeedbackTopic> Topic to publish feedback after a write process,")
|
||||||
self.__println("<Converter> Converter for data, one of {0}".format(', '.join(self.__listConverterNames())))
|
self.__println("<Converter> Converter for data, one of {0}"
|
||||||
|
.format(', '.join(self.__listConverterNames())))
|
||||||
|
|
||||||
|
|
||||||
def do_add_coil(self, arg):
|
def do_add_coil(self, arg):
|
||||||
try:
|
try:
|
||||||
(label, unit, address, scanrate, readTopic, writeTopic, feedbackTopic) = self.splitterRe.split(arg)
|
(label, unit, address, scanrate, readTopic, writeTopic, feedbackTopic) = self.splitterRe.split(arg)
|
||||||
@ -135,12 +135,12 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
unit = parseIntArbitraryBase(unit)
|
unit = parseIntArbitraryBase(unit)
|
||||||
address = parseIntArbitraryBase(address)
|
address = parseIntArbitraryBase(address)
|
||||||
scanrate = float(scanrate)
|
scanrate = float(scanrate)
|
||||||
r = RegisterDatapoint.CoilDatapoint(label=label,
|
r = RegisterDatapoint.CoilDatapoint(label=label,
|
||||||
unit=unit,
|
unit=unit,
|
||||||
address=address,
|
address=address,
|
||||||
scanRate=datetime.timedelta(seconds=scanrate),
|
scanRate=datetime.timedelta(seconds=scanrate),
|
||||||
publishTopic=readTopic,
|
publishTopic=readTopic,
|
||||||
subscribeTopic=writeTopic,
|
subscribeTopic=writeTopic,
|
||||||
feedbackTopic=feedbackTopic)
|
feedbackTopic=feedbackTopic)
|
||||||
self.registers.append(r)
|
self.registers.append(r)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
@ -161,7 +161,7 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
self.__println("<WriteTopic> Topic to be subscribe to receive data to be")
|
self.__println("<WriteTopic> Topic to be subscribe to receive data to be")
|
||||||
self.__println(" written")
|
self.__println(" written")
|
||||||
self.__println("<FeedbackTopic> Topic to publish feedback after a write process,")
|
self.__println("<FeedbackTopic> Topic to publish feedback after a write process,")
|
||||||
|
|
||||||
def do_add_ir(self, arg):
|
def do_add_ir(self, arg):
|
||||||
try:
|
try:
|
||||||
(label, unit, address, count, scanrate, updateOnly, readTopic, converter) = self.splitterRe.split(arg)
|
(label, unit, address, count, scanrate, updateOnly, readTopic, converter) = self.splitterRe.split(arg)
|
||||||
@ -188,12 +188,12 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
address = parseIntArbitraryBase(address)
|
address = parseIntArbitraryBase(address)
|
||||||
count = parseIntArbitraryBase(count)
|
count = parseIntArbitraryBase(count)
|
||||||
scanrate = float(scanrate)
|
scanrate = float(scanrate)
|
||||||
r = RegisterDatapoint.InputRegisterDatapoint(label=label,
|
r = RegisterDatapoint.InputRegisterDatapoint(label=label,
|
||||||
unit=unit,
|
unit=unit,
|
||||||
address=address,
|
address=address,
|
||||||
count=count, scanRate=datetime.timedelta(seconds=scanrate),
|
count=count, scanRate=datetime.timedelta(seconds=scanrate),
|
||||||
updateOnly=updateOnly,
|
updateOnly=updateOnly,
|
||||||
publishTopic=readTopic,
|
publishTopic=readTopic,
|
||||||
converter=converter)
|
converter=converter)
|
||||||
self.registers.append(r)
|
self.registers.append(r)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
@ -212,7 +212,8 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
self.__println("<ScanRate> Scanrate in seconds (float)")
|
self.__println("<ScanRate> Scanrate in seconds (float)")
|
||||||
self.__println("<UpdateOnly> Publish only when value has changed")
|
self.__println("<UpdateOnly> Publish only when value has changed")
|
||||||
self.__println("<ReadTopic> Topic to publish read data")
|
self.__println("<ReadTopic> Topic to publish read data")
|
||||||
self.__println("<Converter> Converter for data, one of {0}".format(', '.join(self.__listConverterNames())))
|
self.__println("<Converter> Converter for data, one of {0}"
|
||||||
|
.format(', '.join(self.__listConverterNames())))
|
||||||
|
|
||||||
def do_add_di(self, arg):
|
def do_add_di(self, arg):
|
||||||
try:
|
try:
|
||||||
@ -239,13 +240,13 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
count = parseIntArbitraryBase(count)
|
count = parseIntArbitraryBase(count)
|
||||||
scanrate = float(scanrate)
|
scanrate = float(scanrate)
|
||||||
bitCount = int(bitCount)
|
bitCount = int(bitCount)
|
||||||
r = RegisterDatapoint.DiscreteInputDatapoint(label=label,
|
r = RegisterDatapoint.DiscreteInputDatapoint(label=label,
|
||||||
unit=unit,
|
unit=unit,
|
||||||
address=address,
|
address=address,
|
||||||
count=count,
|
count=count,
|
||||||
scanRate=datetime.timedelta(seconds=scanrate),
|
scanRate=datetime.timedelta(seconds=scanrate),
|
||||||
updateOnly=updateOnly,
|
updateOnly=updateOnly,
|
||||||
publishTopic=readTopic,
|
publishTopic=readTopic,
|
||||||
bitCount=bitCount)
|
bitCount=bitCount)
|
||||||
self.registers.append(r)
|
self.registers.append(r)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
@ -269,7 +270,7 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
def do_list(self, arg):
|
def do_list(self, arg):
|
||||||
for i, r in enumerate(self.registers):
|
for i, r in enumerate(self.registers):
|
||||||
self.__println("#{0}: {1!s}".format(i, r))
|
self.__println("#{0}: {1!s}".format(i, r))
|
||||||
|
|
||||||
def help_list(self):
|
def help_list(self):
|
||||||
self.__println("Usage: list")
|
self.__println("Usage: list")
|
||||||
self.__println("-----------")
|
self.__println("-----------")
|
||||||
@ -280,7 +281,7 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
r.errorCount = 0
|
r.errorCount = 0
|
||||||
r.writeCount = 0
|
r.writeCount = 0
|
||||||
r.readCount = 0
|
r.readCount = 0
|
||||||
|
|
||||||
def help_reset(self):
|
def help_reset(self):
|
||||||
self.__println("Usage: reset")
|
self.__println("Usage: reset")
|
||||||
self.__println("-----------")
|
self.__println("-----------")
|
||||||
@ -293,7 +294,8 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
ratio = -1
|
ratio = -1
|
||||||
else:
|
else:
|
||||||
ratio = float(r.errorCount) / float(processCount)
|
ratio = float(r.errorCount) / float(processCount)
|
||||||
self.__println("#{0:2d}: {1:15s} ({2:2d}, {3:5d}), rc: {4:7d}, wc: {5:7d}, pc: {6:7d}, ec: {7:7d}, q: {8:1.4f}"
|
self.__println("#{0:2d}: {1:15s} ({2:2d}, {3:5d}), rc: {4:7d}, "
|
||||||
|
"wc: {5:7d}, pc: {6:7d}, ec: {7:7d}, q: {8:1.4f}"
|
||||||
.format(i, r.label, r.unit, r.address, r.readCount, r.writeCount,
|
.format(i, r.label, r.unit, r.address, r.readCount, r.writeCount,
|
||||||
processCount, r.errorCount, ratio))
|
processCount, r.errorCount, ratio))
|
||||||
|
|
||||||
@ -328,10 +330,10 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
value = None
|
value = None
|
||||||
else:
|
else:
|
||||||
raise CmdInterpreterException('unknown type specifier, must be I, F, B, S or T')
|
raise CmdInterpreterException('unknown type specifier, must be I, F, B, S or T')
|
||||||
|
|
||||||
if key not in r.__dict__:
|
if key not in r.__dict__:
|
||||||
raise CmdInterpreterException('selected datapoint does not support key')
|
raise CmdInterpreterException('selected datapoint does not support key')
|
||||||
|
|
||||||
r.__dict__[key] = value
|
r.__dict__[key] = value
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
self.__println("ERROR: {0!s}, {1!s}".format(e.__class__.__name__, e))
|
self.__println("ERROR: {0!s}, {1!s}".format(e.__class__.__name__, e))
|
||||||
@ -380,7 +382,7 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
|
|
||||||
def do_quit(self, arg):
|
def do_quit(self, arg):
|
||||||
self.__println("Bye!")
|
self.__println("Bye!")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def __save(self):
|
def __save(self):
|
||||||
RegisterDatapoint.saveRegisterList(self.registers, self.config.registerFile)
|
RegisterDatapoint.saveRegisterList(self.registers, self.config.registerFile)
|
||||||
@ -404,11 +406,10 @@ class CmdInterpreter(cmd.Cmd):
|
|||||||
self.__println("Reload the register file, overwrite all unsaved changes.")
|
self.__println("Reload the register file, overwrite all unsaved changes.")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CmdHandle(socketserver.StreamRequestHandler):
|
class CmdHandle(socketserver.StreamRequestHandler):
|
||||||
def handle(self):
|
def handle(self):
|
||||||
logger = logging.getLogger('CmdHandle')
|
logger = logging.getLogger('CmdHandle')
|
||||||
cmd = CmdInterpreter(io.TextIOWrapper(self.rfile), io.TextIOWrapper(self.wfile), self.server.userData.config,
|
cmd = CmdInterpreter(io.TextIOWrapper(self.rfile), io.TextIOWrapper(self.wfile), self.server.userData.config,
|
||||||
self.server.userData.notifier, self.server.userData.registers)
|
self.server.userData.notifier, self.server.userData.registers)
|
||||||
try:
|
try:
|
||||||
cmd.cmdloop()
|
cmd.cmdloop()
|
||||||
@ -416,25 +417,28 @@ class CmdHandle(socketserver.StreamRequestHandler):
|
|||||||
except ConnectionAbortedError as e:
|
except ConnectionAbortedError as e:
|
||||||
logger.info("Cmd handle externally interrupted")
|
logger.info("Cmd handle externally interrupted")
|
||||||
|
|
||||||
|
|
||||||
class MyThreadingTCPServer(socketserver.ThreadingTCPServer):
|
class MyThreadingTCPServer(socketserver.ThreadingTCPServer):
|
||||||
def __init__(self, host, handler, userData):
|
def __init__(self, host, handler, userData):
|
||||||
super().__init__(host, handler)
|
super().__init__(host, handler)
|
||||||
self.userData = userData
|
self.userData = userData
|
||||||
|
|
||||||
|
|
||||||
class MyCmdUserData(object):
|
class MyCmdUserData(object):
|
||||||
def __init__(self, config, notifier, registers):
|
def __init__(self, config, notifier, registers):
|
||||||
self.config = config
|
self.config = config
|
||||||
self.notifier = notifier
|
self.notifier = notifier
|
||||||
self.registers = registers
|
self.registers = registers
|
||||||
|
|
||||||
|
|
||||||
class CmdServer(threading.Thread):
|
class CmdServer(threading.Thread):
|
||||||
def __init__(self, config, notifier, registers):
|
def __init__(self, config, notifier, registers):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.config = config
|
self.config = config
|
||||||
self.server = MyThreadingTCPServer((config.cmdAddress, config.cmdPort), CmdHandle, MyCmdUserData(config, notifier, registers))
|
self.server = MyThreadingTCPServer((config.cmdAddress, config.cmdPort),
|
||||||
|
CmdHandle,
|
||||||
|
MyCmdUserData(config, notifier, registers))
|
||||||
# self.daemon = True
|
# self.daemon = True
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.server.serve_forever()
|
self.server.serve_forever()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user