@@ -25,14 +25,19 @@ def __init__(self):
25
25
self .local_ip = '127.0.0.1'
26
26
self .local_port = 2390
27
27
self .server_socket = socket .socket (family = socket .AF_INET , type = socket .SOCK_DGRAM )
28
- self .server_socket .settimeout (
29
- 0.1 ) # decreases sampling rate significantly because it will wait for recv 0.1 sec but it's just a test
30
28
self .server_socket .bind ((self .local_ip , self .local_port ))
31
29
self .state = State .wait .value
32
30
self .addr = None
33
31
self .package_num = 0
34
32
self .transaction_size = 12
35
33
self .package_size = 114
34
+ self .sampling_rate = 250
35
+ self .transaction_speed_250 = .048 - .003225 #.048 is the time it takes to send 12 packages at 250Hz, we have to adjust this with an arbitrary value
36
+ self .server_socket .settimeout (
37
+ .0000001 ) # decreases sampling rate significantly because it will wait for receive to timeout
38
+ self .total_packets_sent = 0
39
+ self .start_streaming_time = 0
40
+ self .DEBUG_MODE = False
36
41
37
42
def run (self ):
38
43
start_time = time .time ()
@@ -41,8 +46,11 @@ def run(self):
41
46
msg , self .addr = self .server_socket .recvfrom (128 )
42
47
if msg == Message .start_stream .value :
43
48
self .state = State .stream .value
49
+ self .start_streaming_time = time .time ()
44
50
elif msg == Message .stop_stream .value :
45
51
self .state = State .wait .value
52
+ self .total_packets_sent = 0
53
+ self .start_streaming_time
46
54
elif msg in Message .ack_values .value or msg .decode ('utf-8' ).startswith ('x' ):
47
55
self .server_socket .sendto (Message .ack_from_device .value , self .addr )
48
56
elif msg == Message .time_calc_command .value :
@@ -89,9 +97,16 @@ def run(self):
89
97
for i in range (self .transaction_size ):
90
98
package .extend (bytes (transaction [i ]))
91
99
self .server_socket .sendto (bytes (package ), self .addr )
100
+ self .total_packets_sent += self .transaction_size
92
101
except socket .timeout :
93
102
logging .info ('timeout for send' )
103
+
104
+ time .sleep (self .transaction_speed_250 )
94
105
106
+ if (self .DEBUG_MODE ):
107
+ elapsed_time = (time .time () - self .start_streaming_time )
108
+ sampling_rate = self .total_packets_sent / elapsed_time
109
+ print ('elapsed time: ' + str (elapsed_time ) + ' sampling rate: ' + str (sampling_rate ))
95
110
96
111
def main ():
97
112
emulator = GaleaEmulator ()
0 commit comments