예제 #1
0
 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')
예제 #2
0
 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())
예제 #3
0
 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()
예제 #5
0
 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')
예제 #6
0
 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")))
예제 #8
0
 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')
예제 #9
0
 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')
예제 #11
0
 def start_server(self):
     log(self, 'Launching HTTP server on {} : {}'.format(self.m_ip, self.m_port))
     self.m_thread.start()
예제 #12
0
 def stop(self):
     log(self, 'Stopping KeyboardController')
     self.m_thread.join()
예제 #13
0
 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()))
예제 #14
0
 def on_fear_event_received(self, packet):
     log(
         self,
         'New FearEvent {} received. Transmitting to generation...'.format(
             packet))
예제 #15
0
 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')))
예제 #18
0
 def stop_session(self):
     log(self, 'Stopping session')
     self.stop_ore()
     self.stop_android()
예제 #19
0
 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())
예제 #20
0
 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())
예제 #21
0
 def stop_server(self):
     log(self, 'Stopping MiddlewareHttpServer')
     self.m_thread.terminate()
예제 #22
0
 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())