/
LoraMeshChatApplication.py
52 lines (43 loc) · 1.73 KB
/
LoraMeshChatApplication.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env python
#
# Copyright (c) 2019, Pycom Limited.
#
# This software is licensed under the GNU GPL version 3 or any
# later version, with permitted additional terms. For more information
# see the Pycom Licence v1.0 document supplied with this file, or
# available at https://www.pycom.io/opensource/licensing
#
__version__ = '1'
from WifiAP import WifiAP
from WebServer import WebServer
from LoraMeshAdapter import LoraMeshAdapter
from MeshNetworkState import MeshNetworkState
from NetworkNodeDecoration import NetworkNodeDecoration
from MessageBoard import MessageBoard
from WebClientView import WebClientView
from FirmwareHasher import FirmwareHasher
from Message import Message
import time
import machine
class LoraMeshChatApplication:
""" Class for chatting over Lora """
def __init__(self):
self.timeToSendSelfInfo = 10;
self.ap = WifiAP()
firmware = FirmwareHasher.calculate();
print("Code firmware: " + str(firmware))
self.decoration = NetworkNodeDecoration(self.ap.ID, -1, -1, firmware, {})
self.meshState = MeshNetworkState(self.decoration)
self.messageBoard = MessageBoard(self.meshState)
self.mesh = LoraMeshAdapter(self.messageBoard, self.meshState)
self.view = WebClientView(self.messageBoard, self.meshState)
self.www = WebServer(self.view)
def update(self):
self.mesh.update();
# random sleep time
#print("sleeping update")
time.sleep(10)
self.timeToSendSelfInfo -= 10
if self.timeToSendSelfInfo <= 0:
self.timeToSendSelfInfo = 40;
self.messageBoard.sendMessage(Message(self.decoration.toString(), Message.TYPE_BROADCAST, self.meshState.getIP(), 0, False, False, True))