dromo - control VDR using a mobile phone

Download latest files from https://sourceforge.net/projects/dromo/files/. Screenshots here.

Readme

This application allows controlling VDR from a mobile device.  

Written by:                  Pekko Tiitto 
Project's homepage:          http://dromo.sourceforge.net/
Latest version available at: http://sourceforge.net/projects/dromo/files/
License:                     GNU General Public License version 3.0 (GPLv3)                     


### Description

The dromo application allows one to control VDR from a mobile device. The application consists of a client and 
a server. The client is Java ME application (MIDlet) that runs on the mobile device. The server is stand-alone
Java SE application that provides VDR data in a format that is more optimized for mobile usage than SVDRP.
The application uses data compression and synchronization to minimize the amount of transferred data from
the server to the client. 

The server uses SVDRP to communicate with VDR. Additionally it reads the epg.data file directly, 
and monitors the timers.conf, channels.conf and recordings files for changes. The epg.data file is read
directly to improve server's response times, and files are monitored for changes so that the server knows
when to update its internal data structures and notify the connected clients of changes. 


### Features

- Viewing programme schedules by channel (Playing today)
- Viewing currently playing programmes (Now playing) - somewhat half-baked though
- Viewing, creating, editing and removing timers
- Viewing and deleting recordings
- Viewing amount of free disk space
- Saving programme info to phone's calendar (reminders) 
- Sending programme info via SMS (plain text message or vCalendar)


### Requirements

Server:
- VDR (tested with version 1.6.0)
- Java SE runtime version 6
- JSVC v1.0.2 (used for running the server as a daemon)
- JNotify v0.91 (used for monitoring changes in files, included in the server package)

Client:
- Mobile device must support Java ME applications and additionally MIDP 2.0, CLDC 1.1, and Nokia UI API must be supported. 
- Recommended resolution is 240x320 or 320x240. Although, the client should work on other resolutions as well,
  but the graphics and layout are done for the previously mentioned resolution.
- The device must have some free disk space for the client to store its data to. The size depends on the
  number of channels used etc, but 1 megabyte should be ok.
- A physical keypad - touch devices are not supported currently.

In general Nokia S60 3rd edition feature pack 1 and 2 devices should work quite well. Nokia S40 devices starting 
from 5th edition feature pack 1 should work even better (the UI seems to work faster). The client might work
on other devices as well, perhaps even on other manufacturers' devices than Nokia's.  

Notice that the client has not been signed so at least once after launching the client you will be asked
permission to connect to the dromo server. If you do not give the application permission to use the network
connection, then the client naturally will not work. Also, when sending an SMS or saving information to
device's calendar, the user will be asked permission to do so.

The client uses a custom text input mechanism, i.e. handles mapping key presses to characters, in the
text fields that are used for filtering list items. Because of this predictive text input and copy-pasting 
do not work, and there are some other limitations as well. The custom text input should work with traditional
mobile phone keypads, QWERTY keypads and half-QWERTY keypads (Nokia E55).


### Installing

Server:
1. Extract dromo_server_*.zip 
2. Configure the server by modifying the dromo_server.conf file. See section "Server configuration".
3. Start the server. Either by running the dromo_server.sh script or by using the sample init_script (you might 
   need to modify it first). 

Client:
1. Extract dromo_client_*.zip
2. Place the .jar and .jad file either to a web server so that you can download the .jad file using your 
   mobile phone's web browser, or install the application directly to your mobile phone.
3. Once installed to your mobile device, launch the client application.
4. When the client starts for the first time it asks for the username, password, server host and port. 
   Enter the information according to how you configured the server.
5. Select the channels that you want to be visible in the now playing and schedules views.
6. Select Options > Save


### Server configuration

- username and password: these are used to identify users that have full access to your dromo server.
- guest-username and guest-password: these identify the guest account that only has access to schedule information.
- port: defines what port number the dromo server should be listening to for incoming client connections.
- svdrp-host and svdrp-port: the hostname or IP-address and port number of the SVDRP server.
- epg-file: absolute path of the epg file. Server reads programme information directly from this file.
- timers-file: absolute path of the timers file. This file is monitored for changes. It is not read or modified directly.
- recordings-dir: absolute path of the directory containing recordings. Used for monitoring changes in recordings.
- client-url: defines the URL from which the dromo client can be downloaded from. 
  This is used, if an older client connects to the server, to enable the user to update the client via the client UI.
- client-version: version number of the client that the server supports. This is also used for client updates.

- Server logging can be configured by modifying the logging.properties file. The server uses the Java Logging API
  and by default it is configured to write a log file to the server's directory.


### Used libraries and tools

Libraries included in the application binaries:
- Bouncy Castle - http://www.bouncycastle.org/
- TinyLine GZIPInputStream - http://www.tinyline.com/utils/index.html
- kXML 2 - http://kxml.sourceforge.net/kxml2/
- java-diff - http://www.incava.org/projects/java/java-diff/

Tools used for building (included in the src archives):
- Antenna - http://antenna.sourceforge.net/
- ProGuard - http://proguard.sourceforge.net/
- Apache POI - http://poi.apache.org/ 


### Building

Requirements:
- JDK version 6
- Apache Ant v1.7.0 or newer
- Sun Wireless Toolkit (WTK) 2.5.2
- Nokia S40 5th Edition FP-1 / 6th Edition SDK

Both the server and the client share some classes. These classes are included in the reunaME_lib archive.

Setup:
1. Create a directory structure as follows:
    ./reunaME_library
    ./dromo/dromo_server
    ./dromo/dromo_client
    
2. Extract the source archives to their respective directories.
3. Copy nokiaui.jar from the S40 SDK lib directory to the reunaME_library/tools directory
4. Add an environment variable named WTK_HOME that points to the root of Wireless Toolkit installation directory.

To build the server go to the ./dromo/dromo_server directory and run 'ant' (the default target creates the
release archive). 

To build the client go to the ./dromo/dromo_client directory and run 'ant' (the default target creates 
the .jar and .jad files to the dist directory).