update recever and add ap case 3d files
This commit is contained in:
parent
cf175c9ffd
commit
92d9a448b0
3
.gitignore
vendored
3
.gitignore
vendored
@ -1 +1,2 @@
|
||||
/.vscode
|
||||
/.vscode
|
||||
build
|
||||
BIN
ap_case/apcase.3mf
Normal file
BIN
ap_case/apcase.3mf
Normal file
Binary file not shown.
BIN
ap_case/apcase.FCStd
Normal file
BIN
ap_case/apcase.FCStd
Normal file
Binary file not shown.
68
recever.py
68
recever.py
@ -9,11 +9,7 @@ BOAT_STATE_INCTRL = 1
|
||||
BOAT_STATE_AVAILABLE = 0
|
||||
BOAT_STATE_LOCKED = -1
|
||||
|
||||
boats = [
|
||||
{ "id": 0, "name": "test boat", "state": BOAT_STATE_AVAILABLE },
|
||||
{ "id": 1, "name": "varent object", "state": BOAT_STATE_AVAILABLE }
|
||||
]
|
||||
|
||||
boats = []
|
||||
clients = []
|
||||
|
||||
def onCMD(data):
|
||||
@ -61,6 +57,47 @@ async def echoClients(client):
|
||||
data += str(client['id']) + ";" + str(client['boat']) + ";" + str(client['state']) + ":"
|
||||
await client['ws'].send(data + '\n')
|
||||
|
||||
async def takeControll(client, boat):
|
||||
global boats
|
||||
if (client['boat'] is not None):
|
||||
boat["state"] = BOAT_STATE_AVAILABLE
|
||||
client["boat"] = None
|
||||
for b in boats:
|
||||
if (b['id'] == int(boat)):
|
||||
if (boat['state'] == BOAT_STATE_AVAILABLE):
|
||||
boat["state"] = BOAT_STATE_INCTRL
|
||||
print("take controll: " + str(client["id"]) + " -> " + boat["name"])
|
||||
client["boat"] = b
|
||||
return
|
||||
else:
|
||||
print("WARN: takeControll: " + boat["name"] + " not available (" + str(client["id"]) + ")")
|
||||
break
|
||||
|
||||
async def freeBoat(boat):
|
||||
global boats, clients
|
||||
for client in clients:
|
||||
if (client["boat"]['id'] == boat):
|
||||
client["boat"] = None
|
||||
break
|
||||
for b in boats:
|
||||
if (b['id'] == int(boat)):
|
||||
if (boat['state'] == BOAT_STATE_INCTRL):
|
||||
boat["state"] = BOAT_STATE_AVAILABLE
|
||||
break
|
||||
|
||||
async def lockBoat(boat):
|
||||
global boats, clients
|
||||
for client in clients:
|
||||
if (client["boat"]['id'] == boat):
|
||||
client["boat"] = None
|
||||
break
|
||||
for b in boats:
|
||||
if (b['id'] == int(boat)):
|
||||
boat["state"] = BOAT_STATE_LOCKED
|
||||
break
|
||||
|
||||
|
||||
|
||||
async def onMessage(message, client):
|
||||
global boats
|
||||
data = message.replace('\n', '').split(';')
|
||||
@ -70,13 +107,15 @@ async def onMessage(message, client):
|
||||
if (data[1] == "boats"):
|
||||
await echoBoats(client)
|
||||
elif(data[1] == "ctrl"):
|
||||
print("controll")
|
||||
takeControll(client, data[2])
|
||||
elif(data[1] == "end"):
|
||||
print("end")
|
||||
takeControll(client, -1)
|
||||
elif(data[1] == "free"):
|
||||
print("free")
|
||||
if (client["id"] == adminId):
|
||||
freeBoat(data[2])
|
||||
elif(data[1] == "lock"):
|
||||
print("lock")
|
||||
if (client["id"] == adminId):
|
||||
lockBoat(data[2])
|
||||
elif(data[1] == "locked"):
|
||||
await echoLockedBoats(client)
|
||||
elif(data[1] == "kick"):
|
||||
@ -84,9 +123,12 @@ async def onMessage(message, client):
|
||||
elif(data[1] == "clients"):
|
||||
await echoClients(client)
|
||||
elif(data[1] == "d"):
|
||||
print("controll cmd (" + client['id'] + "): " + data[2])
|
||||
if (client['boat'] is None):
|
||||
print("WARN: controll cmd (" + client['id'] + ") to None: " + data[2])
|
||||
else:
|
||||
print("INFO: controll cmd (" + client['id'] + ") to " + client['boat']['name'] + ": " + data[2])
|
||||
else:
|
||||
print("something else: '" + data[1] + "'")
|
||||
print("WARN: invalid command (" + client['id'] + "): '" + data[1] + "'")
|
||||
|
||||
async def newClient(clientId, ws):
|
||||
client = { "id": clientId, "boat": None, "ws": ws, "state": "active" }
|
||||
@ -115,11 +157,11 @@ async def run(ws, path):
|
||||
async for message in ws:
|
||||
message = message.split(';')
|
||||
if (len(message) == 3 and message[1] == "4675"):
|
||||
client = await newClient(message[1], ws)
|
||||
client = await newClient(message[0], ws)
|
||||
if (client is not None):
|
||||
break
|
||||
elif (len(message) == 3 and message[1] == "3440"):
|
||||
client = await newBoat(message[1], message[2], ws)
|
||||
client = await newBoat(message[0], message[2], ws)
|
||||
if (client is not None):
|
||||
break
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user