Multi-platform app that allows your devices to communicate
Find a file
2013-09-20 16:03:17 +02:00
kcm KCM updated when pairing state changes externally 2013-09-20 16:03:17 +02:00
kded qDebugs incorrectly placed 2013-09-20 16:03:17 +02:00
libkdeconnect Ooops compilation was broken! 2013-09-04 16:40:57 +02:00
plasmoid SVN_SILENT made messages (.desktop file) 2013-09-20 16:02:43 +02:00
tests Type was missing for identity packages 2013-09-03 02:14:55 +02:00
.gitignore Initial commit 2013-06-06 05:57:06 +02:00
CMakeLists.txt Renamed daemon -> kded 2013-09-02 03:23:34 +02:00
COPYING add missing licence file 2013-09-13 19:30:36 +02:00
macros.cmake Rename cmakemacros.txt -> macros.cmake 2013-09-02 14:47:37 +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.