2022-04-04 14:48:43 +02:00
|
|
|
from channels.generic.websocket import AsyncWebsocketConsumer
|
2022-04-04 01:13:48 +02:00
|
|
|
|
2022-04-04 14:48:43 +02:00
|
|
|
from c3nav.mesh import messages
|
2022-04-04 01:13:48 +02:00
|
|
|
|
|
|
|
|
2022-04-04 14:48:43 +02:00
|
|
|
class MeshConsumer(AsyncWebsocketConsumer):
|
|
|
|
async def connect(self):
|
2022-04-06 17:25:46 +02:00
|
|
|
print('connected!')
|
2022-04-04 14:48:43 +02:00
|
|
|
await self.accept()
|
|
|
|
|
|
|
|
async def disconnect(self, close_code):
|
2022-04-06 17:25:46 +02:00
|
|
|
print('disconnected!')
|
2022-04-04 01:13:48 +02:00
|
|
|
pass
|
|
|
|
|
2022-04-06 22:56:08 +02:00
|
|
|
async def send_msg(self, msg):
|
|
|
|
print('Sending message:', msg)
|
|
|
|
await self.send(bytes_data=msg.encode())
|
|
|
|
|
2022-04-04 14:48:43 +02:00
|
|
|
async def receive(self, text_data=None, bytes_data=None):
|
|
|
|
if bytes_data is None:
|
|
|
|
return
|
|
|
|
msg = messages.Message.decode(bytes_data)
|
|
|
|
print('Received message:', msg)
|
|
|
|
if isinstance(msg, messages.MeshSigninMessage):
|
2022-04-06 22:56:08 +02:00
|
|
|
await self.send_msg(messages.MeshLayerAnnounceMessage(
|
2022-04-06 17:25:46 +02:00
|
|
|
src='00:00:00:00:00:00',
|
|
|
|
dst=msg.src,
|
|
|
|
layer=messages.NO_LAYER
|
2022-04-06 22:56:08 +02:00
|
|
|
))
|
|
|
|
await self.send_msg(messages.ConfigDumpMessage(
|
|
|
|
src='00:00:00:00:00:00',
|
|
|
|
dst=msg.src,
|
|
|
|
))
|