Multi-platform app that allows your devices to communicate
Find a file
Albert Vaca deeeb595b3 Implemented encryption in NetworkPackage using QCA2
Fixed some bugs in the pairing process state machine
Keys are now stored in base64 in KConfig (was storing non-allowed chars)
Updated NetworkPackage tests to include encryption
Increased networkpackage version 1 -> 2
2013-09-01 22:13:03 +02:00
daemon Implemented encryption in NetworkPackage using QCA2 2013-09-01 22:13:03 +02:00
kcm Added symmetric pairing 2013-08-30 19:10:43 +02:00
libkdeconnect Changed QSslKeys to QCA keys that will actually allow us to encrypt things 2013-08-31 13:04:00 +02:00
plasmoid Made "no devices" message more explicit 2013-08-29 14:02:39 +02:00
tests Implemented encryption in NetworkPackage using QCA2 2013-09-01 22:13:03 +02:00
.gitignore Initial commit 2013-06-06 05:57:06 +02:00
CMakeLists.txt Implemented encryption in NetworkPackage using QCA2 2013-09-01 22:13:03 +02:00
cmakemacros.txt Changing dbus interface to improve communication with kcm and the solid backend 2013-08-13 23:23:32 +02:00
letsgo.sh Moved plugins into separate folders and added KServiceTypeTrader 2013-08-12 16:09:52 +02:00
README Plugins are now owned by devices and not by daemon 2013-08-13 05:07:32 +02:00

Class diagram
==============

   Backend_1  ...  Backend_N
           \   |  /
            Daemon
           /   |  \
     Device_1  ...  Device_N
                   /         \
                   |-Plugin_1 |-DeviceLink_1
                   |-Plugin_2 |-DeviceLink_2
                   |- ...     |-...
                   |-Plugin_N |-DeviceLink_N


Daemon instantiates Backends

Backends manage to create DeviceLinks with the devices they can reach, and Q_EMIT them to Daemon.

When Daemon receives a DeviceLink from a backend it:
    - If he already knows the Device, adds the DeviceLink to the Device
    - If not, it creates a new Device.

Devices contain a list of DeviceLinks, plus a list of Plugins (instantiated automatically)

Information for and from Plugins is encapsulated in NetworkPackages.

When a DeviceLink receives a NetworkPackage from the device in the other end, Device will notify all the plugins.

When a Plugin wants to send a NetworkPackage, it does so using the pointer to Device



The NetworkPackage format
=========================

NetworkPackages are independent and self-contained pieces of information that
are sent from one device to another (via a DeviceLink) serialized in json.

The basic structure of a NetworkPackage is the following:

{
    "id": 123456789,
    "type": "org.kde.whatever",
    "body": {

    },
    "version": 1
}

Each type of package defines what it should contain inside its "body", so only
the emisor Plugin and receiver Plugin of this type of package need agree about
its content.