/EchoConnect

Library & GUI program to transfer data between computers using sound.

Primary LanguageC++MIT LicenseMIT

Linux Windows MacOS Linting

EchoConnect

The project will ultimately enable easy communication between computers that do not require any additional services (Bluetooth / WiFi), using high-frequency sounds. We will create a documented transmission protocol that supports error correction and transmission validation. On its basis, we are going to build a mechanism that allows you to transfer files or text between computers. The whole will be wrapped in API made available in the form of shared libraries (.so / .dll). In addition, we've created sample applications (CLI / QT) that use this API to present its capabilities.

Use cases:

  • People with defective/poor computer set
  • Hobbyists and curious people

Functionalities:

  • Data transmission by sound
  • Error correction, verification of correctness
  • API
  • CLI + GUI app using the API

Technologies used:

  • Language: C++
  • Audio support, GUI: QT
  • Tests: GoogleTest
  • Documentation: Doxygen
  • Linter: clang-tidy
  • Formatter: clang-format

Tools:

  • Repository: Github
  • Issue tracker: Github Issues
  • Project management: Github Projets
  • Continuous Integration: Github Actions

Documentation:

To build on your own (instructions below) or for the newest commit on master at: https://codedocs.xyz/Lorak-mmk/EchoConnect/index.html

Build:

git clone --recurse-submodules https://github.com/Lorak-mmk/EchoConnect.git
cd EchoConnect
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

# Tests
GTEST_COLOR=1 make test CTEST_OUTPUT_ON_FAILURE=TRUE

Output files:

Library: build/libecho/*.so*

Tests: build/libecho/tests/libecho_tests

Automatic documentation build requires Release build mode, i.e. cmake -DCMAKE_BUILD_TYPE=Release

Manual documentation build (in build/):

make doc_doxygen

Documentation files: build/libecho/docs/doc_doxygen

Required libraries:

  • QT