Skip to content

Commit a276cdc

Browse files
Merge branch 'main' of https://github.com/ECC-BFMC/Computer
# Conflicts: # servers/trafficCommunicationServer/udpStream.py
2 parents ad73ecc + d6044fe commit a276cdc

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Copyright (c) 2019, Bosch Engineering Center Cluj and BFMC organizers
2+
# All rights reserved.
3+
4+
# Redistribution and use in source and binary forms, with or without
5+
# modification, are permitted provided that the following conditions are met:
6+
7+
# 1. Redistributions of source code must retain the above copyright notice, this
8+
# list of conditions and the following disclaimer.
9+
10+
# 2. Redistributions in binary form must reproduce the above copyright notice,
11+
# this list of conditions and the following disclaimer in the documentation
12+
# and/or other materials provided with the distribution.
13+
14+
# 3. Neither the name of the copyright holder nor the names of its
15+
# contributors may be used to endorse or promote products derived from
16+
# this software without specific prior written permission.
17+
18+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
28+
# Import necessary modules
29+
from twisted.internet import task, protocol
30+
from .Useful import keyDealer as keyDealer
31+
32+
# Define the udpStream class
33+
class udpStream(protocol.DatagramProtocol):
34+
def __init__(self, streamPort, commPort, encrypt_key, frequency=1):
35+
# Set the broadcast address and stream frequency
36+
self.address = ("<broadcast>", streamPort)
37+
self.frequency = frequency
38+
print("udpStream init")
39+
# Load the private key and prepare the message to send
40+
key = keyDealer.load_private_key(encrypt_key)
41+
msg = "listening on:" + str(commPort)
42+
msg_t = msg.encode()
43+
signature = keyDealer.sign_data(key, msg_t)
44+
tmpMsgToSend = signature + "(-.-)".encode() + msg_t
45+
self.MsgToSend = tmpMsgToSend
46+
47+
def startProtocol(self):
48+
# Allow broadcasting and start the streaming task
49+
print("udpStream start protocol")
50+
self.transport.setBroadcastAllowed(True)
51+
self.streaming_task = task.LoopingCall(self.send_message)
52+
self.streaming_task.start(self.frequency) # Send data every 1 second
53+
54+
def send_message(self):
55+
# Send the message to the broadcast address
56+
# print("udpStream send_message", self.address)
57+
self.transport.write(self.MsgToSend, self.address)
58+
59+
def connectionLost(self, reason):
60+
# Stop the streaming task when the server is stopped
61+
self.streaming_task.stop()

0 commit comments

Comments
 (0)