src/app-framework-binder.git
8 years agoImplement Media Plugin upload API, update README.md
Manuel Bachmann [Fri, 22 Jan 2016 11:25:51 +0000 (12:25 +0100)]
Implement Media Plugin upload API, update README.md

Media Plugin now supports a "upload?value=<file>" API.

Add Media Plugin requirements to README.md.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoAdd choose, play, pause, stop to Media Plugin
Manuel Bachmann [Thu, 21 Jan 2016 04:53:58 +0000 (05:53 +0100)]
Add choose, play, pause, stop to Media Plugin

We can now play/pause/stop a track after having chosen its
index number (default is 0).

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix Media Plugin content list API
Manuel Bachmann [Wed, 20 Jan 2016 15:31:00 +0000 (16:31 +0100)]
Fix Media Plugin content list API

Listing content had various pointer-related issues.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoAdd Media Plugin
Manuel Bachmann [Mon, 11 Jan 2016 09:20:21 +0000 (10:20 +0100)]
Add Media Plugin

Add a Media Plugin, based off Rygel (UPnP), with only an
initialization and a "list" function for now.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoUpdate README.md (PulseAudio optional dependency)
Manuel Bachmann [Mon, 11 Jan 2016 01:52:38 +0000 (02:52 +0100)]
Update README.md (PulseAudio optional dependency)

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoAudio Plugin: add PulseAudio support
Manuel Bachmann [Mon, 11 Jan 2016 01:43:19 +0000 (02:43 +0100)]
Audio Plugin: add PulseAudio support

If PulseAudio development libraries are present, Audio
plugin will now support it. It may still fall back to
ALSA if a PulseAudio server is not found at runtime.

PulseAudio backend supports multiple clients using
one audio adapter.

(+ various fixes and style improvements)

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoUpdate README.md (plugins, code sample)
Manuel Bachmann [Thu, 7 Jan 2016 10:55:39 +0000 (11:55 +0100)]
Update README.md (plugins, code sample)

Updated :
- plugins are now implemented ;
- data structures in code sample have changed ;
- various typos and style details.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix Audio/Radio reinitialization issue
Manuel Bachmann [Wed, 6 Jan 2016 12:56:00 +0000 (13:56 +0100)]
Fix Audio/Radio reinitialization issue

Audio and Radio plugins init() functions were re-creating
a new client context each time, but it is actually unwanted
as afb-radio <TokenRefresh> widgets uses this function to
initialize AND refresh the context.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix set_mute in corner cases
Manuel Bachmann [Tue, 5 Jan 2016 14:45:34 +0000 (15:45 +0100)]
Fix set_mute in corner cases

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix Session Cookie
Fulup Ar Foll [Wed, 30 Dec 2015 10:41:54 +0000 (11:41 +0100)]
Fix Session Cookie

8 years agoFix Cookie Size [was to small]
Fulup Ar Foll [Wed, 30 Dec 2015 10:37:19 +0000 (11:37 +0100)]
Fix Cookie Size [was to small]

8 years agoAdded EmptyPost handling
Fulup Ar Foll [Wed, 30 Dec 2015 10:20:26 +0000 (11:20 +0100)]
Added EmptyPost handling

8 years agoFix mute status for Porter/Koelsch
Manuel Bachmann [Tue, 29 Dec 2015 20:11:44 +0000 (21:11 +0100)]
Fix mute status for Porter/Koelsch

Mute status on Porter/Koelsch is reversed, take this
into account.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoremoving netbeans private data
José Bollo [Tue, 29 Dec 2015 09:09:53 +0000 (10:09 +0100)]
removing netbeans private data

Change-Id: Icfc23e7086a8dbadcc8362a439282602488eac8b

8 years agoSwitch to unique token model
Fulup Ar Foll [Tue, 29 Dec 2015 01:15:07 +0000 (02:15 +0100)]
Switch to unique token model

Token/Session Plugin is now able to issue a globally-valid
token (re-useable with all Plugins, so that an application
using multiple plugins is not forced to manage multiple
tokens anymore).

Adapt Audio & Radio Plugins to this model (init functions
do not create a token anymore, check for a prior existing
one).

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
Author: Fulup Ar Foll <fulup@iot.bzh>
Author: Manuel Bachmann <manuel.bachmann@iot.bzh>

8 years agoFix Audio plugin loading, mute on Porter/Koelsch
Manuel Bachmann [Mon, 28 Dec 2015 15:16:12 +0000 (16:16 +0100)]
Fix Audio plugin loading, mute on Porter/Koelsch

Audio plugin was crashing due to new client context model
misuse.

Muting/demuting sound did fail on Porter/Koelsch boards,
because their audio cards do not obey standards found on
desktop systems.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix plugin loading logic, radio plugin loading
Manuel Bachmann [Mon, 28 Dec 2015 13:39:14 +0000 (14:39 +0100)]
Fix plugin loading logic, radio plugin loading

We should not free() a dlopened pointer.
Internal plugin handle was renamed, adapt radio plugin.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFixed Client Session Context by Plugin
Fulup Ar Foll [Wed, 23 Dec 2015 23:38:41 +0000 (00:38 +0100)]
Fixed Client Session Context by Plugin

8 years agoImplement --ldpaths=dir1:dir2:dir...
Fulup Ar Foll [Wed, 23 Dec 2015 21:51:14 +0000 (22:51 +0100)]
Implement --ldpaths=dir1:dir2:dir...

8 years agoAdd plugin handle into request, pass it to free callback
Manuel Bachmann [Wed, 23 Dec 2015 17:54:24 +0000 (18:54 +0100)]
Add plugin handle into request, pass it to free callback

We need the global handle in requests, and in the free
function.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoMerge origin/master
Fulup Ar Foll [Tue, 22 Dec 2015 23:56:14 +0000 (00:56 +0100)]
Merge origin/master

8 years agoRestore Previous functionalities with a unique Token
Fulup Ar Foll [Tue, 22 Dec 2015 23:55:32 +0000 (00:55 +0100)]
Restore Previous functionalities with a unique Token

8 years agoNew Session Model [compile but not tested]
Fulup Ar Foll [Tue, 22 Dec 2015 22:09:04 +0000 (23:09 +0100)]
New Session Model [compile but not tested]

8 years agoafm-main: update adress and bug fix
José Bollo [Tue, 22 Dec 2015 21:04:01 +0000 (22:04 +0100)]
afm-main: update adress and bug fix

Change-Id: I01776950ddb1328957a8f59f7316aab1ad223f9a

8 years agoDoes not compile
Fulup Ar Foll [Tue, 22 Dec 2015 19:15:13 +0000 (20:15 +0100)]
Does not compile

8 years agoMerge origin/master
Fulup Ar Foll [Tue, 22 Dec 2015 16:55:35 +0000 (17:55 +0100)]
Merge origin/master

8 years agoFix Post with invalid plugins
Fulup Ar Foll [Tue, 22 Dec 2015 16:54:51 +0000 (17:54 +0100)]
Fix Post with invalid plugins

8 years agoCentralize dependencies, add D-Bus dep. to README.md
Manuel Bachmann [Tue, 22 Dec 2015 16:01:59 +0000 (17:01 +0100)]
Centralize dependencies, add D-Bus dep. to README.md

README.md now mentions D-Bus.
Checking dbus presence is now done at the same place as
json-c, libmicrohttpdd...

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoImprove plugin logic, pass plugins count to session
Manuel Bachmann [Tue, 22 Dec 2015 15:31:39 +0000 (16:31 +0100)]
Improve plugin logic, pass plugins count to session

We now pre-reserve for 20 plugins (arbitrary for now,
we downsize if necessary).
Plugins count is now passed to the session in the
"pluginCount" variable.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoMerge origin/master
Fulup Ar Foll [Tue, 22 Dec 2015 14:53:29 +0000 (15:53 +0100)]
Merge origin/master

8 years agoFix Post JSON bug
Fulup Ar Foll [Tue, 22 Dec 2015 14:51:22 +0000 (15:51 +0100)]
Fix Post JSON bug

8 years agoAudio API: manage multiple-channel volume
Manuel Bachmann [Tue, 22 Dec 2015 14:17:37 +0000 (15:17 +0100)]
Audio API: manage multiple-channel volume

You can now set the volume for multiple channels
independantly by using the "value=<1>,<2>..." syntax.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix "no plugins" detection, rename HelloWorld API
Manuel Bachmann [Tue, 22 Dec 2015 08:25:00 +0000 (09:25 +0100)]
Fix "no plugins" detection, rename HelloWorld API

afb-daemon now gracefully exits if no plugins are present.

HelloWorld's API has been renamed to "hello".

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix naming issue with DBus
José Bollo [Mon, 21 Dec 2015 22:19:55 +0000 (23:19 +0100)]
Fix naming issue with DBus

Change-Id: I369b4905c7d53669a0ebd581759a2aa67ff6b9c6

8 years agoAdd plugin for the framework afm-main
José Bollo [Mon, 21 Dec 2015 17:16:24 +0000 (18:16 +0100)]
Add plugin for the framework afm-main

Change-Id: Ib0bfba52aac8a60afc9a80a564202689e28b18ff

8 years agoimproved use of const qualifier
José Bollo [Mon, 21 Dec 2015 17:03:51 +0000 (18:03 +0100)]
improved use of const qualifier

Change-Id: I371bfb6fdbaec91c14c0f3e2f2a45952252f8e27

8 years agoExport getFileUpload to helper-api.c
Fulup Ar Foll [Mon, 21 Dec 2015 16:46:13 +0000 (17:46 +0100)]
Export getFileUpload to helper-api.c

8 years agoMerge origin/master
Fulup Ar Foll [Mon, 21 Dec 2015 15:35:09 +0000 (16:35 +0100)]
Merge origin/master

8 years agoHack --plugins=path
Fulup Ar Foll [Mon, 21 Dec 2015 15:33:23 +0000 (16:33 +0100)]
Hack --plugins=path

8 years agoFix Audio API on Renesas Porter/Koelsch boards
Manuel Bachmann [Mon, 21 Dec 2015 13:11:16 +0000 (14:11 +0100)]
Fix Audio API on Renesas Porter/Koelsch boards

Porter/Koelsch do not expose a standard "Master" playback
mixer on their default interface, as it is common with
desktop audio cards. Add a bit of discovery logic for this.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix Radio and Audio plugin symbols
Manuel Bachmann [Mon, 21 Dec 2015 12:37:24 +0000 (13:37 +0100)]
Fix Radio and Audio plugin symbols

radio-api/audio-api.so were not valid, because they were
not linked correctly with librtlsdr/ALSA.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix HelloWorld
Fulup Ar Foll [Mon, 21 Dec 2015 12:22:28 +0000 (13:22 +0100)]
Fix HelloWorld

8 years agoFixe
Fulup Ar Foll [Mon, 21 Dec 2015 10:12:41 +0000 (11:12 +0100)]
Fixe

8 years agoSwitch to a plugin model
Manuel Bachmann [Mon, 21 Dec 2015 05:57:05 +0000 (06:57 +0100)]
Switch to a plugin model

Each API now compiles to a ".so" file, which gets searched
for in the "${libdir}/afb" directory at startup.

We can now load an arbitrary number of plugins (> 10).

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoUntie Radio and Audio APIs
Manuel Bachmann [Mon, 21 Dec 2015 03:21:51 +0000 (04:21 +0100)]
Untie Radio and Audio APIs

Radio and Audio API functions do not cross-call themselves
directly anymore ; this is necessary to have independent
plugin binaries (.so) in the near future.

(PS : audio buffer securization is WIP)

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoPost File Working in Most cases
Fulup Ar Foll [Mon, 21 Dec 2015 01:10:20 +0000 (02:10 +0100)]
Post File Working in Most cases

8 years agoFix frequency setting bug in Radio API
Manuel Bachmann [Sun, 20 Dec 2015 22:00:56 +0000 (23:00 +0100)]
Fix frequency setting bug in Radio API

Passing floats between functions seems to cause problems...
not sure why ; anyway, fix this by using a double variable.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix bugs in Radio sequence, parameters, add ping/refresh
Manuel Bachmann [Fri, 18 Dec 2015 19:00:27 +0000 (20:00 +0100)]
Fix bugs in Radio sequence, parameters, add ping/refresh

Fixed the following :
- in some cases, powering off a playing radio would block ;
- Radio API "mode" should be "AM/FM", not "true/false".

Radio and Audio APIs now have dedicated functions to ping
status and refresh a session token.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFinal modifications for Radio-Audio API communication
Manuel Bachmann [Thu, 17 Dec 2015 09:54:24 +0000 (10:54 +0100)]
Final modifications for Radio-Audio API communication

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix Audio API runtime
Manuel Bachmann [Thu, 17 Dec 2015 09:17:29 +0000 (10:17 +0100)]
Fix Audio API runtime

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFinalize Audio plugin
Manuel Bachmann [Thu, 17 Dec 2015 07:29:48 +0000 (08:29 +0100)]
Finalize Audio plugin

Signed-off-by: Manuel Bachmann <mbc@iot.bzh>
8 years agoRemove Hashtable for session and cleanup
Fulup Ar Foll [Wed, 16 Dec 2015 23:41:53 +0000 (00:41 +0100)]
Remove Hashtable for session and cleanup

8 years agoInitial Audio plugin
Manuel Bachmann [Wed, 16 Dec 2015 19:38:03 +0000 (20:38 +0100)]
Initial Audio plugin

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoAdded Timeout in Response
Fulup Ar Foll [Wed, 16 Dec 2015 17:12:10 +0000 (18:12 +0100)]
Added Timeout in Response

8 years agoFix radio plugin runtime
Manuel Bachmann [Wed, 16 Dec 2015 16:47:59 +0000 (17:47 +0100)]
Fix radio plugin runtime

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix radio plugin loading
Manuel Bachmann [Wed, 16 Dec 2015 16:22:02 +0000 (17:22 +0100)]
Fix radio plugin loading

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix plugins loading, cleanup and dispatch Radio API code
Manuel Bachmann [Wed, 16 Dec 2015 16:12:04 +0000 (17:12 +0100)]
Fix plugins loading, cleanup and dispatch Radio API code

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoEn court
Fulup Ar Foll [Wed, 16 Dec 2015 14:38:27 +0000 (15:38 +0100)]
En court

8 years agoMigrate Radio API to new model
Manuel Bachmann [Wed, 16 Dec 2015 14:24:02 +0000 (15:24 +0100)]
Migrate Radio API to new model

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoAdd HelloWorld sample to CMake build
Manuel Bachmann [Wed, 16 Dec 2015 10:30:24 +0000 (11:30 +0100)]
Add HelloWorld sample to CMake build

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoNew tree organization, update CMake req. to 2.8.8.
Manuel Bachmann [Wed, 16 Dec 2015 10:25:54 +0000 (11:25 +0100)]
New tree organization, update CMake req. to 2.8.8.

Use CMake-2.8.8-specific feature to allow building the
daemon from various source directories.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoAdd Middleware and change Hashtable techno
Fulup Ar Foll [Wed, 16 Dec 2015 01:30:20 +0000 (02:30 +0100)]
Add Middleware and change Hashtable techno

8 years agoPost En court Ne fonctionne pas
Fulup Ar Foll [Tue, 15 Dec 2015 17:39:45 +0000 (18:39 +0100)]
Post En court Ne fonctionne pas

8 years agoIntermediary Version Does not Compile
Fulup Ar Foll [Tue, 15 Dec 2015 11:08:12 +0000 (12:08 +0100)]
Intermediary Version Does not Compile

8 years agoPost En court Ne fonctionne pas
Fulup Ar Foll [Mon, 14 Dec 2015 17:04:00 +0000 (18:04 +0100)]
Post En court Ne fonctionne pas

8 years agoIntegrated Post for Fileupload Test
Fulup Ar Foll [Mon, 14 Dec 2015 15:24:26 +0000 (16:24 +0100)]
Integrated Post for Fileupload Test

8 years agoMerge branch 'master' of git:iotbzh/afb-daemon
Fulup Ar Foll [Mon, 14 Dec 2015 14:19:12 +0000 (15:19 +0100)]
Merge branch 'master' of git:iotbzh/afb-daemon

8 years agoAdded Doc dir and remove nbprojet from git
Fulup Ar Foll [Mon, 14 Dec 2015 14:15:06 +0000 (15:15 +0100)]
Added Doc dir and remove nbprojet from git

8 years agoDocument UUID dependency, make radio plugin buildable
Manuel Bachmann [Mon, 14 Dec 2015 13:51:18 +0000 (14:51 +0100)]
Document UUID dependency, make radio plugin buildable

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix Rootdir redirect for static files
Fulup Ar Foll [Mon, 14 Dec 2015 13:39:10 +0000 (14:39 +0100)]
Fix Rootdir redirect for static files

8 years agoFixed Session Context Free with ctxFreeCB
Fulup Ar Foll [Sun, 13 Dec 2015 09:21:46 +0000 (10:21 +0100)]
Fixed Session Context Free with ctxFreeCB

8 years agoProposal for Integration with session
Fulup Ar Foll [Sat, 12 Dec 2015 15:07:16 +0000 (16:07 +0100)]
Proposal for Integration with session

8 years agoAdded --token=xxxxx for initial shared secret
Fulup Ar Foll [Sat, 12 Dec 2015 13:02:38 +0000 (14:02 +0100)]
Added --token=xxxxx for initial shared secret

8 years agoAdded --token=xxxxx for initial shared secret
Fulup Ar Foll [Sat, 12 Dec 2015 12:58:00 +0000 (13:58 +0100)]
Added --token=xxxxx for initial shared secret

8 years agoFixed Plugin.private bug, added "no session mode" fixed plugin API
Fulup Ar Foll [Sat, 12 Dec 2015 12:26:14 +0000 (13:26 +0100)]
Fixed Plugin.private bug, added "no session mode" fixed plugin API

8 years agoAdded Session Management
Fulup Ar Foll [Sat, 12 Dec 2015 02:10:34 +0000 (03:10 +0100)]
Added Session Management

8 years agoAdd Radio API plugin
Manuel Bachmann [Thu, 10 Dec 2015 16:32:17 +0000 (17:32 +0100)]
Add Radio API plugin

Add Radio API plugin source code, build with CMake.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoFix &query error
Fulup Ar Foll [Thu, 10 Dec 2015 18:06:23 +0000 (19:06 +0100)]
Fix &query error

8 years agoFix Json Message Structure
Fulup Ar Foll [Thu, 10 Dec 2015 17:12:57 +0000 (18:12 +0100)]
Fix Json Message Structure

8 years agoRemove nbprojet/private from commit
Fulup Ar Foll [Thu, 10 Dec 2015 14:36:40 +0000 (15:36 +0100)]
Remove nbprojet/private from commit

8 years agoAdded Netbean to work with cmake
Fulup Ar Foll [Thu, 10 Dec 2015 14:32:52 +0000 (15:32 +0100)]
Added Netbean to work with cmake

8 years agoAdded nbproject/private empty dir for Netbeans to accept project
fulup [Thu, 10 Dec 2015 13:13:38 +0000 (14:13 +0100)]
Added nbproject/private empty dir for Netbeans to accept project

8 years agomain: fix command-line help typos
Manuel Bachmann [Thu, 10 Dec 2015 09:58:46 +0000 (10:58 +0100)]
main: fix command-line help typos

Some "]" were missing in the command-line help text.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoREADME.md: fix typos
Manuel Bachmann [Thu, 10 Dec 2015 09:31:54 +0000 (10:31 +0100)]
README.md: fix typos

Turn requirements list into real list, add carriage returns
after each command line, add "$" before each command line.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoREADME.md: add CMake build instruction
Manuel Bachmann [Thu, 10 Dec 2015 09:13:07 +0000 (10:13 +0100)]
README.md: add CMake build instruction

List requirements, give build commands workflow.

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoAdd CMake build files (required by Yocto build process)
Manuel Bachmann [Thu, 10 Dec 2015 08:36:34 +0000 (09:36 +0100)]
Add CMake build files (required by Yocto build process)

We now can use CMake by doing :
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install

Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
8 years agoDoc
Fulup Ar Foll [Wed, 9 Dec 2015 16:32:17 +0000 (17:32 +0100)]
Doc

8 years agofix a bug on by default index
Fulup Ar Foll [Wed, 9 Dec 2015 15:41:06 +0000 (16:41 +0100)]
fix a bug on by default index

8 years agoImplemented --alias and made timeout reentrant
Fulup Ar Foll [Wed, 9 Dec 2015 14:47:22 +0000 (15:47 +0100)]
Implemented --alias and made timeout reentrant

8 years agoAdded POST, Plugin API signal protection, refactor HTML5 rewrite
Fulup Ar Foll [Wed, 9 Dec 2015 00:27:23 +0000 (01:27 +0100)]
Added POST, Plugin API signal protection, refactor HTML5 rewrite

8 years agotypo
José Bollo [Tue, 8 Dec 2015 12:43:08 +0000 (13:43 +0100)]
typo

Change-Id: I1a7662c9c3360c716ecbea97f743fc404bd2088c

8 years agoAlmost working
Fulup Ar Foll [Mon, 7 Dec 2015 00:39:27 +0000 (01:39 +0100)]
Almost working

8 years agoMy initial commit message
Fulup Ar Foll [Sun, 6 Dec 2015 17:04:47 +0000 (18:04 +0100)]
My initial commit message