Project Proposal

eQip Project Proposal

Version 0.32 (06/27/02)

Jean-Louis Villecroze eQip Development Team
Abstract


This document contains a working version of the proposal for
the software architecture of a Mobile Information Appliance running QNX.
Feel free to contribute to it.

The goal of the project is to build on top of QNX RTP a software environement that
enable a mobile device to act as a Smart Personal
Digital Assistant
.


Contents


Contibutions


Documents conventions

This section definies all the conventions used in this document:

[!] Note
[?] Question
XXX To be filled
TBC To Be Completed

Change in a version from its predecessor, are colored in RED, as follow :


blah blah blah ... foo bar 56 , blah blah


eQip architecture

The architecture of the eQip is layered as follow :

Applications
Agents Layers
QNX

The Applications running on the device are at the highest
level, they deal with the agents and in some case with the
operating system directly. The system shall use
the message passings ability of QNX for agents communications.



The Agents

The purpose of the agents is to offer various critical services to the applications that may run on the device, and to performe low level tasks related to the good health of the device. An agent is alway running from the moment the device is booted.

7 software agents are planned to be running on the device :

  • timed event agent

    Start app X (or send msg with data to app Y) every Z secs
    or when it is 5:35pm (everyday, only the saturday etc ...).

    • Special event(s)
      • everyday at 3:00am, the device is awaken (LCD turned off, unnecessary
        harware off) for housekeeping. This housekeeping includes :
        • Configuration of the next timed event
        • agents housekeeping
        • system reboot if necessary

        At the end of this housekeeping activity, the device
        shall go back in sleep mode.

      • every morning at a specified time by the user, the device
        -if connected to internet- download severals HTML documents
        for offline reading.
    • When the device is going to sleep, the agent programs the
      next(s) timed event in the CPU.
  • eQip monitor

    Keep track / monitor all the applications running on the
    eQip (make easier for an app to find another app). Provides
    stats on each app (CPU/mem/thread) and allow to specify
    rules on when to kill an application that use too much
    memory/battery (alert the user that he is running out of
    ram/flash).

    • Put the device to sleep if no user input and no activity
      after a given delay.
    • Turn off backlight after a given delay or on app request.
    • When the battery is as low as 10%, start app X with command
      with sitch "-op 4523" or send message Y to application T.
    • Dont allow the eQip to be used when the battery level is
      bellow a given value and not plugged in the AC. Using a
      button combination, the user can force the device to run
      anyway (at his/her own risk).
    • Monitor the battery usage for a given application and keep
      track of it (/time). This stats will be later used to know
      how long the battery will last with the current consumption
      by the running apps.
    • The user should have the possibility to switch his ipaq into
      a battery conservation mode where the user applications are
      run with a lower priority (less time allocated to them). This
      mode shall be turned off whenever the device is plugged to the
      AC.
    • Automaticaly adapt the brightness of the LCD according to the
      time of the day and to the user settings.
    • Start a given application on request from another application
    • Register a message/data to be sent to an application the
      next time the application is running.
    • When an application is about to be launched, the agent check
      if there is "theorically" enought ressource (memory/battery)
      to run it. If not, the agent shall terminate some of the
      running applications (according to rules) to free resources.
  • in/out agent

    Handle sending/reception of data stream from any input/output
    device possible (net,IR,serial) trought a in/out folders and
    routing of the data to the associated application (if requested).

    The agent handle also the application request of input/output
    in realtime when the device can use a communication media (when
    connected).

    [!] Must support 3rd party in/out add-on

  • user input agent
    • Retreive user "grafitti style" input and send it to the current
      application/widget. Make use of reconition plug-in installed by the user.
    • Retreive hardware keyboard (if any) input and send it to the current
      application/widget.
    • Retreive voice input (speech-to-text) and send control/input to the
      current application or to another application/agent.
    • The input must be datafield-aware (ex. if the field is a date, the
      input must be in date type).

    [!] Must support 3rd party input add-on

  • database agent

    Handle storing/retreival of data stored in soups (database) that
    are eQip-wise known.

    • Provides an easy way to store/retreive/search for data associated
      to keys.
    • Simplify back-up and sync of the eQip data by having all critical
      data known and accounted for.
    • Simplify access of data from an application by other applications.
    • Used by an application to store/retrieve its state when terminating/
      starting.

    Soups can be located on onboard flash, CF (& SD) or on another eQip
    or on a workstation (using a serial/net link).

    [!] The agent must conserve writing cycle to the flash FS to increase
    the flash lifespan.

  • Ruby agent

    Handle the execution of any Ruby code requested by any applications
    using Ruby.

    This agent allow to:

    • Have a faster reponse time to the user Ruby action
    • Avoid multiple loading of the same Ruby libraries and functions
      when severals application run at the same time
    • Provides an easy medium for applications communications and data
      sharing
  • Watchdog agent

    The purpose of this agent is to sustain a high level of availability
    of the system when one (or more) of the agents failed by
    monitoring the status of the agents. The agent shall kill and restart any
    failing agent and/or restart agent that have crashed.



Layers

A layer is a shared library that like an agent provides services to the
applications that use it.

Here is a description of the layers available on the device:

  • Data Translators

    To open/load data from differrent supports that have internally
    the same representation, an application shall use a data
    translator (also valid fo writing data).

    An example of translator is an image translator, that read
    a JPG file and output a PhImage_t. Then the application can
    using the same translator to write this PhImage_t in a gif
    file.

    The layer offer to an application a commun interface to all
    the data translator installed on the device.

    Add-Ons are added to the corresponding Translators to handle
    new data format.

    An Add-On handle a specified set of format. Each format is
    indicated by :

    • A name (e.g : JPG translator)
    • A mime-type (e.g : image/jpeg)
    • A file extension (e.g : jpg)

    Each translation can be configurated before beeing use (if
    requiered and supported by the Add-On)

    The standard translators are :

    • Image Translators
    • Sound Translators
  • Localization

    To support various language, an application linked to this
    layer, can acceed the language data files stored in the /lang
    folder of its installation and retreive the correct string
    for a given string with the currently used localization.

  • Communication

    Any application should be able to use this layer to read/send
    data on any communication support present on the device, using
    the simple common interface provided by this layer. The layer
    should allow the application to select the medium and the type
    of protocol (possible for the selected medium).

    For example, any application should be able to create and send
    an email (or read/download one).

  • Text-to-Speech

    Any application should be able to use this layer to output data
    to the user trought a text-to-speech engine.



Special Features

This section list and discuss various features that will be implemented in the
project:

  • Relation device / host

    When the device is connected to an host workstation, three
    modes can be selected by the user :

    • Slave

      In this mode, the device is seen as an external disk by
      the host computer. User can act on the device FS as they
      will do on any FS (with respect of the files rights and
      to the autorisation given by the owner to the host
      computer).

      Applications on the device can be started and will be
      displayed on the host screen. Where the keyboard and mouse
      will be used.

    • Master

      In this mode, the device act as the owner of the screen,
      keyboard and mouse of the host computer. The screen become
      a copy of the device screen (with far more real-estate).
      Applications started on the device are displayed in the
      host screen.

      The host computer is seen as an external disk by the device.
      User can act on the host FS as they will do on any FS (
      with respect of the files rights).

      eQip applications installed on the host computer are added
      in the Launcher in a "Host" folder.

      When the device is disconnected from the host, the host
      resume is "normal" screen contents and behavior.

    • Relay

      In this mode, the host computer act as an INTERNET access
      point, providing an ethernet link over the connection. The
      host computer is seen as computer on the network and can be
      contacted and used with standard ethernet applications.

  • Relation device / device

    It shall be possible for 2 or more devices, to establish
    a band of devices trought any communication medium.

    Once a device have join such group, it can share is FS
    (all or part of it) and its application, with the others
    members.

    Applications
    installed on a device but missing from the other, and
    added in the Launcher in a "Remote" folder.
    Devices user can run these applications, displayed on
    the users device (using users device input).
    According to application launch setting, the application will
    be run on the owners device or on the remote device.

    In order to be "shared" and application should have been marked
    by the owner of the device as shareable. By default, a "shared"
    application is always set as execute on the users device.

  • User modes

    The user shall have the possibility to define mode of use for
    his device and to select (manualy or automaticaly according
    to the time) which mode the device should run on. A mode of
    use
    is a list of application/settings that must be set/run
    whiles a specific mode is activated.

    For example :

    • At 8am, the device switch to the "work" mode, in which the
      backdrop is the Diary, and the Notes application is running
      by default. The device is also set into the non-conservation
      battery mode. The Diary application show a compact version
      of the owner activites planned for the day.
    • At the supposed starting time of a meeting, a new meeting type
      note is automaticaly created (linked to the meeting event),
      ready for user input.
    • At 6pm (or on user action), the device switch to "commute"
      mode, the Diary and Notes applications are stopped, the
      launcher is set back as the backdrop, and the "Games" folder
      is automaticaly selected. The device is also set into the
      battery conservation mode.
    • At 8pm, the user select the "relax" mode, the MP3 player is
      automaticaly run and start playing the favorites song of the
      owner. As the device is on it cradle, the device come out of
      the battery conservation mode.
  • System sounds

    The device shall play various non-intrusive sounds during its
    operation by the user.

    Basic sounds events are :

    • pen tap
    • slip opening
    • system alert
      • low battery
      • application crash

    All system sounds must respect the current audio volume (set by
    the user) and shall not be played when the audio output is muted.

    The user shall be able to change the system sounds to match is
    preferences.

  • Going to sleep

    When the user press the power button or by a programmated action,
    the device shall go into sleep mode. The following action must
    be performed in order before the CPU is put into "active" sleep
    mode :

    • Turn OFF the LCD
    • Send a message to all running applications that the device
      is going to sleep
    • Wait for ACK from the application before continuing (with
      a timeout)
    • Turn OFF unnecessary hardware
    • Suspend all running application but some of the agents
    • Send a message to some of the agent/driver for special processing
      of the "going to sleep" event
    • Wait for the agents ACK (without a timeout)
    • Put the CPU in sleep mode (and performe any OS related
      stuff)

    The device must support the "storage mode" in which the contents
    of its memory is stored on a CF/SD card. The battery is in this
    case switched OFF. When the battery is switched ON, the device awake
    like if it have been "asleep" (altought the date/time will be
    adjusted by the user).

    [!] must not last more than one second

  • Waking-up (from sleep)

    When the user press the "power" button or if an alarm is raised
    in the CPU, the device shall come off sleep. The following
    action must be performed after the CPU come out from sleep mode:

    • The OS shall performe any related operation
    • Some of the agents must be resumed
    • A message shall be sent to some of the agents/drivers for special
      processing of the "waking-up" event
    • Wait for the agent ACK (width a timeout)
    • Turn ON hardware (if necessary)
    • Resume all running applications and others agents (if necessary)
    • Send a message to all running applications that the device has
      just awaken
    • Turn on the LCD (if necessary)

    [!] must not last more than one second

  • Annotated FS

    Every files stored (and exchanged with an host computer) shall
    support a set of annotations, some of them definied by the system
    some added by the user. This is also valid for "directory".

    An annotation is a definied by a : key, type, value and are stored
    and retreived from the files annotations using the key (a string)
    to look-up the correct annotation.

    For every file (that really need it), the following annotations
    will ALWAYS be presents:

    • Mime type
    • Preferred Application (if any)
    • Sharing rights
    • CRC
    • owner (system,user)
    • Date of last sync
  • Safe

    A "safe" is a special folder of the device, where the user can
    store sensitive documents/soups/files. On user request (or if
    the device go to sleep after a given time of non-use), the "safe"
    is closed (archived and crypted). To re-open the "safe" and
    access to the file store in it, the user shall specify the
    correct password.

  • Fleet of device

    Within a same entity (e.g: compagny), all the devices owned
    by it can be grouped in a fleet (an entity can own severals fleets).

    According to the entity policies, handling a fleet of device allow :

    • Lock the device to use only on persona, and forbbid creation of
      new personae
    • Forbide the installation by the user of new packages (or of given categories
      of applications)
    • Restrict access to the settings
    • Restrict access to applications according to the time.
    • Provide a way to sychronize all the devices of a fleet with the same
      data/applications, when the device is connected to the entity network (or to an host computer).
    • Offer services to simply retreive given data from the users device when connected.
    • From his workstation, the fleet administrator shall be able to:
      • Clone a new device to the entity standard and personalize it for its user
      • Monitor the device status (presence,sync,statistics...)
      • Perform remote maintenance and troubleshooting
      • Manage standard contents (installed application) of the fleets device
      • Reinstall a recent back-up on a new device when the original has been
        destroyed/lost
      • Enter in the fleet database, the data (contact,notes,events) that must
        be added to the device data at the next sync.
  • Embedded Programming Language

    The user shall have the possibility to program directly on his/her device
    using a special paper-roll of the Notepad (Edit, Run, Debug):

    • Create simple application
    • Create simple GUI
    • Create Note, Contact or Diarys event
    • Handle Soups
    • Access to the communication medium

    The programming language used will be Ruby, and its integration to
    the device system shall be complete.

    Any application that wish it, shall be able to integrate Ruby code,
    modifiable by the user, to extend or customize the application.
    It shall be possible for instance to set a Ruby function as callback for
    a GUI event.
    It shall be also possible for an application to embed Ruby code
    in a document or in the file annotations.



Basic applications

All applications must respect the following requirements :

  • Receive and process a GOING_TO_SLEEP message, sent by the
    system when the device is going to sleep. The application
    must send an acknowledgment within XXms.
  • Receive and process a WAKING_UP message, sent by the system
    when the device is waking-up. The application must send an
    acknowledgment within XXms.
  • Receive and process a TERMINATE_NOW message, sent by the
    system when the application must terminate. The application
    must send an acknowledgment withing XXms, or it will be
    slay.
  • The application must provide a menu to be displayed and
    interacted with, when the user tap the title of the
    application.
  • Must use the storage agent to store settings/state/
    data (unless the data cant be fitted in the soup, eg.
    an application creating a MP3 file or an image or a
    specific file to be shared with 3rd party desktop
    application).

The following list, describe the functionalities of the applications that will
be shipped with the eQip system :

  • Top/Bottom bar

    Always visible (or partly hidded) thoses two bar have for purpose to
    display critical informations to the owner and to give quick access to common
    features of the device.

    • Bottom bar
      • The bar shall allow an application to install
        some action/display whiles running (ex. MP3 player).
      • The bar shall accept special application that are
        only running only inside the bar (ex. when online, the
        temperature of a city is displayed after beeing
        requested from the net by a given "bottom" bar add-on).
      • Plugins shall raise the functionnality of the bar, the user having
        the complete choice of what to display
        (altought some plugins will be recommended). Here is :
        • Battery status

          Must show the estimated time of use left
          before the battery run off if the current
          load is maintained.

        • Time/Date
        • Volume level (can be changed)
        • Screen bightness
        • Memory available (RAM/FLASH)
        • CPU activity
        • Ticker (stock market style)
        • Turn backlight on/off
        • List/Switch running application {PLUGIN by JLV}
        • Pen input area for launching actions
        • Disable any futur alarms (to be used during event
          where the device shall go stealth whatever alarm is
          going to be raised)
        • List of applications installed on the device. Grouped by folder.
      • The bar shall provide to the user a simple way of displaying at
        any moment emergency informations, such as :
        • Police phone number
        • Firefighter phone number
        • Family doctor

        according to his/her current location.

    • Top bar
      • Display application title (tap on it, display an application provided
        menu
      • rotate screen
      • hide top/bottom bar
      • close current application
      • cycle trought the running application
      • Get help (on the running application)
  • Launcher
    • Must keep/display on demand a list of the most used app.
    • Must handle the fact that application can be stored
      on SD/PcCard/CF, inserted/removed by the user as will.
    • Allow to select application to be shown by their
      location : Internal or CF (or SD).
    • Allow the user to create new (or rename) categories
      and to move application in other categories that the
      one specified by the author. On of the default folder
      is "Favorites" in which the user can fill (link) his
      favorites (most used) applications.
    • Allow the user to fill an application in severals
      folders at the same time (link).
    • Display infos on an application
      • Location (store)
      • Size (exe/libs/data...)
      • Author/version/release date/installation date
      • Battery/memory usage stats
      • Frequency of use (once a day, every hours ...)
    • Allow to freeze/thawn an application (compress) to
      reduice wasted space (for application not use very
      often).
    • Shall allow to user to select a "Detailed List" style
      for the Launcher, where application are listed as files
      with their informations.
    • The user must have the possibility to replace the
      Launcher by another application as "backdrop". If this
      is the case, the "top" bar shall give the possibility
      to start the launcher as a standard application. The
      user shall be eable to re-set the launcher as the
      backdrop application.
    • Provides a way to reboot the device.
    • The user shall have the possibility to have his full
      name displayed in the launcher window. A tap on it, shall
      display his/her business card.
  • Settings
    • Position of the vertical scrollbar (left or right)
    • Default Volume level
    • Systems Sounds
    • Date/time (and timezone)
    • Current Location (various location may be added by the user (see contact application))
    • Language (localization)
    • Owner infos (create new personae, select the current persona)
    • Settings for the basic apps (notepad,Diary,contacts,launcher,explorer)
    • Colors used on the device for the GUI (themes ?)
    • Idle delay before auto-sleep (when plugged to AC/when not)
    • Idle delay before turning the backlight off (when plugged to AC/when not)
    • Network settings for each location (LAN/ADSL/PPP/WIFI)
    • Basic applications settings
  • Welcome

    Automaticaly started the first time the user boot his/her eQip,
    the application allow the user to discover (get familiar)
    with the eQip GUI and allow him to enter the basic settings:

    • Calibrate the screen/pen
    • Owner infos (default persona)
    • Date/time/location
    • etc...
  • Notepad
    • Must provides services for other applications to creates
      notes (even when the note application is not running) and
      "fill" them or list existing notes (and extract
      data from it).
    • Must allow the user to send a note to another device.
    • Display list of notes sorted by folders (where they
      are filled).
    • Allow the user to create new note (from the paper-roll installed), modify existing note and
      fill then in one (or several) folder (all three applications : Notepad,Contact and Diary share
      the same folders).
    • All notes have the following attributes :
      • creation date
      • update date
      • title
      • protection (read/write)
      • type (paper-roll type)
      • list of folder in which the note is filled
      • list of contact links
      • list of Diary links
      • list of files links
      • list of note links (note can be linked to other notes)
    • List of default paper-roll type :
      • Paper note (standard text note)
      • Blank paper (basic hand-free drawing)
      • Named note (specificaly linked to a contact)
      • Graph paper (precise drawing)
      • To do check-list (various style possible, with time tracking and priority)
      • Shopping check-list
      • Two column (allow simple math operation)
      • Drawing canvas (complex hand-free drawing)
      • Meeting note
      • Phone conversation form
      • Personal Diary
      • Daily activities (with time tracking)
      • Email
      • Direction (to given location)
      • Music partition
      • Audio recording
      • Ruby listing
    • Must support XML/HTML export of the notes.
    • Accept 3rd-party paper-roll (using add-on).
  • Diary
    • Must provides services for other applications to creates
      events (even when the Diary application is not running)
      and "fill" them or list existing events (and extract
      data from it).
    • Must allow the user to send an event to another device.
    • Must support XML/HTML export of the Diary events
    • Accept 3rd-party event (using add-on)
    • Display a calendar and allow to manipulate events. The
      possible display mode are:
      • show day (0am-12pm(according to user settings)/list of events)
      • show week
      • show month
      • show year
      • show todo (all)
      • show today events/todo

      Events are filled in folder, and filter can be applied to the display
      mode to show only relevent events.

    • Allow to delete all events older than a given date. When deleting a recurrent event, the user shall be asked if only the current occurence shall be removed of all further occurences.
    • An event is :
      • Meeting

        The default data of such event are :

        • date/time (and periodicity)
        • starting/ending time
        • notification (show a warning X days/hours/minutes before event)
        • subject
        • category (work/fun ...)
        • list of folders where the event is filled in
        • list of actions to performe
        • participants (link to contact cards)
        • location (possible link to a contact card)
        • comments
        • Link to related notes / files
        • User specific fields ...

        Exemple : "Project review" meeting at 4:00pm (duration 1 hour)

      • Appointement

        The default data of such event are :

        • date/time (and periodicity)
        • starting/ending time
        • notification (show a warning X days/hours/minutes before event)
        • subject
        • category (work/fun ...)
        • list of folders where the event is filled in
        • list of actions to performe
        • contact (link to contact card)
        • location (possible link to a contact card)
        • comments
        • Link to related notes / files
        • User specific fields ...

        Example : Doctor McCoy at 6pm

      • Activity

        The default data of such event are :

        • date/time (and periodicity)
        • starting/ending time
        • notification (show a warning X days/hours/minutes before event)
        • subject
        • category (work/fun ...)
        • list of folders where the event is filled in
        • list of actions to performe
        • contact (possible link to contact card)
        • location (possible link to a contact card)
        • comments
        • Link to related notes / files
        • User specific fields ...

        Example : Going for a run at 3pm

      • To do

        The default data of such event are :

        • status (done/in progress/not done)
        • subject
        • list of folders where the event is filled in
        • date/time due (and periodicity)
        • notification (show an warning X days/hours/minutes before the event)
        • contact (link to contact card)
        • comments
        • Link to related notes / files
        • User specific fields ...

        Example : Confirm meeting with John Do

      • Reminder

        The default data of such event are :

        • date (and periodicity)
        • notice (show an warning X days before the event)
        • subject
        • comments
        • list of folders where the event is filled in
        • Link to related notes / files / contact
        • User specific fields ...

        Example : Bob b-day !

      • Action

        The default data of such event are :

        • date/time (and periodicity)
        • subject
        • list of folders where the event is filled in
        • type (execute,send data)
        • action data
        • comments
        • Link to related notes / files

        Example : Every morning at 5am, get online and grab my favorites web pages contacts

      • Period

        The default data of such event are :

        • start date/time, end date/time
        • subject
        • list of the events categories that shall be disabled during the period
        • list of folders where the event is filled in
        • comments
        • Link to related notes / files

        Example : During my vacations, disable any work related events (like periodic meeting).

    • Events actions
      For most of the events, a list of actions can be specified by the user. On the occurence
      of the event, the actions will be performed. The actions can be :
      • Start a given application
      • Show the note application ...
        • and create a new note (of a given type)
        • and display a given note
        • and list a given folder
    • Events periodicity

      When specifying the periodicity of an event, the user shall have the
      following choices:

      • every day
      • every other day
      • every X days
      • every week
      • every other week
      • every X weeks
      • every month
      • every other month
      • every X months
      • same week each month
      • every year
      • every other year
      • every X years
      • same week each year
    • Events notification

      When an event is scheduled to start, the device shall show a notification slip that
      inform the owner that the given event is about to start. According to the user settings
      for the event, the notification can happen before the event it-self. When the slip is
      shown, the user can snooze or discard the notification. When snoozed, the slip (and the
      notification sounds) will be reshow to the user at a later time (specified when snoozed).

  • Contacts
    • Must provides services for other applications to creates
      contacts (even when the contacts application is not running)
      and "fill" them or list existing contacts (and extract
      data from it).
    • Must allow the user to send an entry to another device.
    • Contacts are filled in folders according to the users need
      (Office,Friend). A contact can be filled in several folders.
    • Allow the user to create view profile, by selecting the field
      to show in a given profile. The user shall switch of profile easily.
    • Let the user add his/her own fields to a contact
    • Must support XML/HTML and vCard export/import of the contacts
    • Default Contact data

      There is three kind of contact entry :

      • Human Beeing
        • title
        • Name
        • Firstname
        • Nickname
        • keywords (list of like/dislike words...)
        • special day (list of special event (date/subject) (Diary events can be generated according))
        • List of related people with their relation (ex: assistant , Ms Doe)
        • Photo(s) (if available)
        • Location (home/work, link )
        • compagny (link or not to another contact card)
        • position
        • phone (home/work/cell)
        • fax (home/work)
        • email
        • web site
        • comments
        • notes (link to notes related to this contact)
        • Diary (link to events related to this contact)
        • files (link to related files/folders to this contact)
        • users definied fields ...
      • Entity
        • name
        • Logo (if available)
        • keywords (list of field/activity words...)
        • contacts (list of contact in the compagny, possible link to other contact card)
        • Location (link)
        • phone (home/work/cell)
        • fax (home/work)
        • email
        • web site
        • comments
        • notes (link to notes related to this contact)
        • Diary (link to events related to this contact)
        • files (link to related files/folders to this contact)
        • users definied fields ...
      • Location
        • nick name (if any. ex: home , work ...)
        • adress
        • how to get there
        • comments
        • contacts (link to contact related to this location)
        • notes (link to notes related to this location)
        • Diary (link to events related to this location)
        • files (link to related files/folders to this contact)
        • users definied fields
    • Contacts are shown (filtered by kind) :
      • Sorted according to any of the card fields
      • Grouped (and sorted) according to their folders and/or location
  • Help/Assistant
    • Find file/application/data/contacts/notes/events
    • How to
    • Applications helps
  • In/Out Folder
    • Show the data received (and not yet processed by the
      default application) or to be sent by/from the device.
    • Once a data is sent off, or processed by the related
      application, the item is removed from the folder.
    • Must support various medium of input/output such as :
      • ethernet
      • IRL
      • serial
  • File browser
    • Display folder contents in various way (icon,detail...)
    • Display a specific icon according to the file mime type
    • Shall allow the user to add new mime-type and specify the
      icon for it.
    • Shall allow the user to copy/move/delete users files and
      directory on the internal memory or on CF (SD) card.
    • Allow to set the prefered application for a given
      mime-type (overide the existing one if needed) or/and
      for a specific file
    • A tap on a file, start the preferred application for
      this file by providing the files pathname to the
      application
    • Shall hide the system files such as the soup database
      by default.
    • Keep a list of favorites folder as well as a list of
      the last visitated folder
    • Support Add-Ons to add files processing (ex. compress, crypt)
  • Calculator
    • Must include a "scientific" mode
    • Must include a "ploting" mode
    • Must be programmable in Ruby (user adding new functions)
  • Package installer

    Allow to install package in the :

    • internal store
    • external store(s)

    from remote location or from a localy stored package file.

  • Backup/sync app
    • Sync with an host computer is done with the SyncML protocol
    • Use any kind of host-eQip connection (NET/USB/Serial/IR)
    • Must support back-up of the internal memory on removable
      device such as CF or SD
    • Sync with another device shall be possible. In this case, the
      user shall have to select what to synchronize.
  • Web browser
    • Must cach data in RAM to avoid CF writing.
  • Offline web contents reader

    This application, coupled with the Web Browser shall allow the user
    to specify the web site to download for offline reading. The download
    of the data could be done by the device it-self or by an host computer
    with a later transfert of the data.

  • MP3 player
    • Must allow the user to turn off the screen when playing
    • Fine sound level tuning
    • Shall allow the user to create new TAG on a mp3 file
    • Must support a list of mp3 location : inte