Skip to content

Commit f8ff8c2

Browse files
committed
Update galea v4 emulator to control sampling rate
1 parent 3caf957 commit f8ff8c2

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

emulator/brainflow_emulator/galea_manual_v4.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,19 @@ def __init__(self):
2525
self.local_ip = '127.0.0.1'
2626
self.local_port = 2390
2727
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
3028
self.server_socket.bind((self.local_ip, self.local_port))
3129
self.state = State.wait.value
3230
self.addr = None
3331
self.package_num = 0
3432
self.transaction_size = 12
3533
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
3641

3742
def run(self):
3843
start_time = time.time()
@@ -41,8 +46,11 @@ def run(self):
4146
msg, self.addr = self.server_socket.recvfrom(128)
4247
if msg == Message.start_stream.value:
4348
self.state = State.stream.value
49+
self.start_streaming_time = time.time()
4450
elif msg == Message.stop_stream.value:
4551
self.state = State.wait.value
52+
self.total_packets_sent = 0
53+
self.start_streaming_time
4654
elif msg in Message.ack_values.value or msg.decode('utf-8').startswith('x'):
4755
self.server_socket.sendto(Message.ack_from_device.value, self.addr)
4856
elif msg == Message.time_calc_command.value:
@@ -89,9 +97,16 @@ def run(self):
8997
for i in range(self.transaction_size):
9098
package.extend(bytes(transaction[i]))
9199
self.server_socket.sendto(bytes(package), self.addr)
100+
self.total_packets_sent += self.transaction_size
92101
except socket.timeout:
93102
logging.info('timeout for send')
103+
104+
time.sleep(self.transaction_speed_250)
94105

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))
95110

96111
def main():
97112
emulator = GaleaEmulator()

0 commit comments

Comments
 (0)