def start_session(self): log(self, 'Starting session') if self.m_ore_ready and self.m_android_ready: self.start_ore() self.start_android() else: log(self, 'Error ORE or Android not ready')
def on_biofeedback_packet_received(self, bf, timestamp): log( self, 'Biofeedback received with values bpm {} ts {}'.format( bf, timestamp)) self.m_middleware_http_sender.post_data_to_endpoint( PacketFactory.get_biofeedback_packet(bf, timestamp), self.get_ore_endpoint())
def init_session(self): log(self, 'Init session') if not self.m_ore_ready and not self.m_android_ready: self.init_ore() self.init_android() else: log(self, 'Error ORE or Android already ready')
def stop_server(self): log(self, 'Stopping the Middleware Websocket Server') self.m_is_running = False if self.m_client_socket is None: log(self, 'Unable to close client connexion : null client socket') else: self.m_client_socket.close() self.m_thread.join()
def start_android(self): log(self, 'Starting Android...') if self.m_android_ready: self.m_middleware_http_sender.post_data_to_endpoint( PacketFactory.get_control_session_packet(True), self.get_android_endpoint()) else: log(self, 'Error Android not ready')
def start_ore(self): log(self, 'Starting ORE...') if self.m_ore_ready: self.m_middleware_http_sender.post_data_to_endpoint( PacketFactory.get_control_session_packet(True), self.get_ore_endpoint()) else: log(self, 'Error ORE not ready')
def on_packet_received(self, packet, handler): try: log(self, 'Packet {} received from {}'.format(packet['message_type'], handler.client_address)) if packet['message_type'] == "BIOFEEDBACK": self.m_bf_callback(packet['bf'], packet['timestamp']) handler.send_complete_response(200, json.dumps(PacketFactory.get_program_state_packet(True, "BF received"))) except json.decoder.JSONDecodeError: print('ERROR: Unable to parse the current Json : ' + str(packet)) handler.send_complete_response(400, json.dumps(PacketFactory.get_program_state_packet(False, "Bad format")))
def on_control_session_packet_received(self, packet, url): log(self, 'on_control_session_packet_received') if packet['status']: if url == self.get_ore_endpoint(): log(self, 'ORE successfuly launched') elif url == self.get_android_endpoint(): log(self, 'Android successfuly launched') else: log(self, 'Unable to start the target')
def on_init_packet_response_received(self, packet, url): log(self, 'on_init_packet_response_received') if packet['status']: if url == self.get_ore_endpoint() and not self.m_ore_ready: log(self, 'ORE successfuly init') self.m_ore_ready = True self.m_websocket_server.connect_to_ore() self.m_websocket_server.start_mws() elif url == self.get_android_endpoint( ) and not self.m_android_ready: log(self, 'Android successfuly init') self.m_android_ready = True else: log(self, 'Unable to init the target')
def post(self, data, url): try: log(self, 'Sending {} to {}'.format(data, url)) session = requests.Session() session.trust_env = False response = session.post(url=url, headers=self.get_header(), data=json.dumps(data), timeout=5) json_resp = response.json() resp_url = response.url response.close() log(self, 'Response {} received from {}'.format(json_resp, resp_url)) self.compute_response(data, json_resp, resp_url) except requests.exceptions.ReadTimeout: log(self, 'Timed out') except requests.exceptions.ConnectionError: log(self, 'Connection refused')
def start_server(self): log(self, 'Launching HTTP server on {} : {}'.format(self.m_ip, self.m_port)) self.m_thread.start()
def stop(self): log(self, 'Stopping KeyboardController') self.m_thread.join()
def run_keyboard_loop(self): for line in sys.stdin: try: self.m_middleware_callbacks[line.rstrip()]() except KeyError: log(self, 'The input {} is not valid'.format(line.rstrip()))
def on_fear_event_received(self, packet): log( self, 'New FearEvent {} received. Transmitting to generation...'.format( packet))
def start(self): log(self, 'Starting KeyboardController') self.m_thread.start()
def connect_to_ore(self): log(self, 'Trying to connect ore websocket on {}:{}'.format(str(self.m_ip), self.m_port)) self.m_socket.connect((self.m_ip, self.m_port)) log(self, 'Successfuly connected to ore websocket {}:{}'.format(str(self.m_ip), self.m_port))
def read_websocket(self): self.m_is_running = True while self.m_is_running: data = self.m_socket.recv(self.m_buff_read_size) log(self, 'Receiving data from websocket : {}'.format(data)) self.m_fe_callback(json.dumps(data.decode('utf-8')))
def stop_session(self): log(self, 'Stopping session') self.stop_ore() self.stop_android()
def stop_android(self): log(self, 'Stopping Android...') self.m_middleware_http_sender.post_data_to_endpoint( PacketFactory.get_control_session_packet(False), self.get_android_endpoint())
def init_ore(self): log(self, 'Init ORE...') self.m_middleware_http_sender.post_data_to_endpoint( PacketFactory.get_init_packet(self.m_ip, self.m_port, self.m_ore_rte), self.get_ore_endpoint())
def stop_server(self): log(self, 'Stopping MiddlewareHttpServer') self.m_thread.terminate()
def init_android(self): log(self, 'Init Android...') self.m_middleware_http_sender.post_data_to_endpoint( PacketFactory.get_init_packet(self.m_ip, self.m_port, self.m_android_rte), self.get_android_endpoint())