Multi-platform app that allows your devices to communicate
Find a file
2013-08-20 14:05:22 +02:00
daemon Wrong copyright headers and other silly stuff 2013-08-20 14:05:22 +02:00
kcm Error checking in KCM, in case KDED is not running 2013-08-18 18:22:54 +02:00
test Wrong copyright headers and other silly stuff 2013-08-20 14:05:22 +02:00
.gitignore Initial commit 2013-06-06 05:57:06 +02:00
CMakeLists.txt Telephony and pausemusic plugins now use kdeconnect.telephony packages (need changes in the Android code to work) 2013-08-14 06:46:24 +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.