SDK: Alarm service API

Registered by Zsombor Egri on 2013-06-07

Provide API to register and enumerate system alarms.

Blueprint information

Status:
Started
Approver:
Zoltan Balogh
Priority:
Undefined
Drafter:
Zsombor Egri
Direction:
Needs approval
Assignee:
Zsombor Egri
Definition:
New
Series goal:
Proposed for saucy
Implementation:
Started
Milestone target:
None
Started by
Zsombor Egri on 2013-08-12

Related branches

Sprints

Whiteboard

Requirements:
============

Requirements for alarm API:
- to be able to set an alarm time (v0.1)
- to be able to set the alarm time to be timezone sensitive (v0.2)
- to be able to set an alarm message (v0.2?)
- to be able to set an alarm melody to be played when the alarm is triggered (v0.2)
- to have snooze, dismiss and/or acknowledge possibilities (v0.2)
- to launch an application when the alarm is acknowledged (v0.3?)
- to wake up the device from standby when the alarm is kicked (v0.4)

Recurring alarm requirements:
- to create recurring alarms (v0.1)
- to be able to set alarm recurrence:
    * daily (v0.1)
    * weekly (v0.1)
    * monthly(v0.2)
    * yearly (v0.2)
    * weekly on a specific day (v0.1)
    * weekly on the given days (v0.1)
- to be able to set the number of occurences for the alarm (v0.2)

Snooze requirements (at least one to be chosen): (v0.3)
- to be able to set snooze time and the amount of snooze occurences
OR
- to be able to configure the pre-defined snooze time (5-5-7-10-15)
OR
- to be able to set an array of snooze times

Version split:
==========

Version 0.1 features:
- to be able to set an alarm time (v0.1)
- to be able to set an alarm message (v0.1)
- to be able to set an alarm melody to be played when the alarm is triggered (v0.1)
- to create recurring alarms (v0.1)
- to be able to set alarm recurrence:
    * daily (v0.1)
    * weekly (v0.1)
    * weekly on a specific day (v0.1)
    * weekly on the given days (v0.1)

Version 0.1.1 features:
- support for different applications, each having its own collection
- support APP_ID for each created alarm

Version 0.1.2 features:
- add nextOccurrence property to Alarm
- add syncWith() invokable to sync alarm data with a given object from alarm model
- update list of alarms after being kicked; disable expired OneTime alarms (requires EDS support)

Version 0.2 features:
- to be able to set the alarm time to be timezone sensitive (v0.2)
- to have snooze, dismiss and/or acknowledge possibilities (v0.2)
- to be able to set alarm recurrence:
    * monthly(v0.2)
    * yearly (v0.2)
- to be able to set the number of occurences for the alarm (v0.2)

Version 0.3 features:
- to launch an application when the alarm is acknowledged (v0.3?)
Snooze requirements (at least one to be chosen): (v0.3)

Version 0.4 features:
- to wake up the device from standby when the alarm is kicked (v0.4)

Decision was to use QtPim Organizer as backend for the alarms.
An in between version is required (0.1.1, or other) depending when the Organizer engine will be ready.

Split Alarm functionality into
    1) WUP API - API which enables developer to set an action to wake up an application on a given time; the API should be a simple generic API which does not provide abilities to set recurring alarms
TODO: discuss with HUD whether are they planning such a functionality in a HUD action
    2) Alarm API - API handling the scheduling of recurring alarms, notifications to display, etc built on top of WUP API

Q: Why not create an alarm daemon that does the scheduling and a UIless app to provide the notification abilities? How about using the shell to display the notes?

Updates:
=======
* 13.08.2013.
-- alarm message requirement moved to 0.1 version due to UI requirements

* 28.01.2014.
-- alarm backend supports multiple alarm collections, each app can have its own collection; use this feature to separate app specific alarms in 0.1.1
-- there is a need for WUP timers which do not show alarm notification but only launch the app registering the timer

(?)

Work Items

Work items:
[zsombi] Agree on alarm feature split on versions: DONE
[zsombi] Agree on what kind of APIs SDK will provide (C/C++/Qt/QML): DONE
[zsombi] Investigate plans for the HUD action WUP ability: DONE
[zsombi] Design QML Alarm API v0.1: DONE
[zsombi] Agree with design on their requirements on alarm API: DONE
[zsombi] Split alarm API requirements into versions so parties can be unblocked: DONE
[zsombi] Implement Qt/QML Alarm API v0.1: DONE
[zsombi] Implement Qt/QML Alarm API v0.1.1: INPROGRESS
[zsombi] Implement Qt/QML Alarm API v0.1.2: TODO
[zsombi] Implement Qt/QML Alarm API v0.2: TODO
[zsombi] Implement Qt/QML Alarm API v0.3: TODO
[zsombi] Implement Qt/QML Alarm API v0.4: POSTPONED
[zsombi] Integrate new QOrganizer engine: DONE
[zsombi] Simple test application: DONE
[zsombi] Turn adaptation into asynchronous implementation: DONE
[charlesk] Define API exposed by date-time-indicator to setup alarms: TODO
[charlesk] Implement API exposed by date-time-indicator to setup alarms: TODO

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.