def test_load_chunk(self):
        manager = record_manager()
        file_list = store_manager.get_files()
        record = random.choice(file_list)
        res = manager.get_send_chunk(record, 0)

        self.assertGreater(len(res), 0)
    def test_init_sensors(self):
        manager = record_manager()
        multi = I2C_controller()
        sensor = mpu6050(0x68)

        manager.setup_sensors()

        for i in range(1, 6):
            multi.I2C_setup(PTR_ARR[i])
            self.assertEqual(sensor.read_accel_range(raw=True), RANGE)
    def test_load_cache(self):
        manager = record_manager()
        file_list = store_manager.get_files()
        record = random.choice(file_list)
        res = manager.get_send_chunk(record, 0)

        start = manager.get_cache_size()

        self.assertGreater(len(res), 0)

        res = manager.get_send_chunk(record, 1)

        self.assertGreater(len(res), 0)
        self.assertEqual(start, manager.get_cache_size())
    def test_start_new_recording(self):
        manager = record_manager()

        start_count = manager.get_cache_size()

        stop = threading.Event()
        logging_thread = threading.Thread(target=manager.start_new_recording,
                                          args=(stop, ))
        logging_thread.start()

        time.sleep(1)

        stop.set()
        logging_thread.join()

        self.assertEqual(manager.get_cache_size(), start_count + 1)
Example #5
0
def main():
    print("Configuring Sensors")

    manager = record_manager()
    manager.setup_sensors()

    print("Waiting for bluetooth")
    # We need to wait until Bluetooth init is done
    time.sleep(5)

    # Make device visible
    os.system("hciconfig hci0 piscan")

    # Create a new server socket using RFCOMM protocol
    server_sock = BluetoothSocket(RFCOMM)
    # Bind to any port
    server_sock.bind(("", PORT_ANY))
    # Start listening
    server_sock.listen(1)

    # Get the port the server socket is listening
    port = server_sock.getsockname()[1]

    # The service UUID to advertise
    uuid = "7be1fcb3-5776-42fb-91fd-2ee7b5bbb86d"

    # Start advertising the service
    advertise_service(server_sock,
                      "SuspOptimiser",
                      service_id=uuid,
                      service_classes=[uuid, SERIAL_PORT_CLASS],
                      profiles=[SERIAL_PORT_PROFILE])

    # Main Bluetooth server loop
    while True:

        print(f"Waiting for connection on RFCOMM channel {port}")

        try:
            client_sock = None

            # This will block until we get a new connection
            client_sock, client_info = server_sock.accept()
            print(f"Accepted connection from {client_info}")

            stop = threading.Event()
            logging_thread = None

            while True:

                # Read the data sent by the client
                data = client_sock.recv(1024)
                if len(data) == 0:
                    continue

                print(f"Received {data}")

                is_continue = get_transaction_continue(manager, data)
                is_init = get_transaction_init(manager, data)

                # Handle the request
                if data == b"transaction:start":
                    if logging_thread is None:
                        stop = threading.Event()
                        logging_thread = threading.Thread(
                            target=manager.start_new_recording, args=(stop, ))
                        logging_thread.start()
                    response = b"true"
                elif data == b"transaction:stop":
                    if logging_thread is not None:
                        stop.set()
                        logging_thread.join()
                        logging_thread = None
                        response = manager.get_last_data()
                    else:
                        response = b"false"
                elif data == b"transaction:list":
                    response = manager.get_all_data()
                elif is_continue:
                    response = is_continue
                elif is_init:
                    response = is_init
                else:
                    response = b"Not supported"

                client_sock.send(response)

        except IOError:
            pass

        except KeyboardInterrupt:
            if client_sock is not None:
                client_sock.close()
            server_sock.close()
            print("Server going down")
            break