Refactor communication to daemon

This commit is contained in:
2022-01-03 22:19:01 +01:00
parent 31b9afb5c1
commit 850e8e5f6f
5 changed files with 68 additions and 34 deletions

View File

@@ -4,41 +4,45 @@ from driver.models import DriverConfiguration
class Connector:
def __init__(self):
self.config = DriverConfiguration.get_solo()
def __send_data(self, message):
# to be encoded
resp = b''
# convert to binary if str is received
if isinstance(message, str):
message = message.encode()
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect((self.config.remote_host, self.config.remote_port))
sock.settimeout(self.config.timeout / 1000) # milliseconds
sock.sendall(message)
resp = sock.recv(1024)
print(resp)
return True
while True:
try:
resp += sock.recv(1024)
except socket.timeout:
break
return resp
def passthrough(self, data):
self.__send_data(data)
return self.__send_data(data)
def ops(self, address, data, function=False):
if function:
message = "<F {0} {1} {2}>".format(address, data['function'],
data['state'])
message = "<F {0} {1} {2}>".format(
address, data['function'], data['state'])
else:
message = "<t 1 {0} {1} {2}>".format(address, data['speed'],
data['direction'])
message = "<t 1 {0} {1} {2}>".format(
address, data['speed'], data['direction'])
self.__send_data(message)
return True
def infra(self, data):
power = data['power']
if "track" in data:
track = " {}".forma(data['track'].upper())
track = " {}".format(data["track"].upper())
else:
track = ""
if power:
if data["power"]:
self.__send_data('<1{}>'.format(track))
else:
self.__send_data('<0{}>'.format(track))