upnpavcontroller/upnprenderingstatemachine/inc/upnprenderingstatemachineconstants.h
branchIOP_Improvements
changeset 40 08b5eae9f9ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpavcontroller/upnprenderingstatemachine/inc/upnprenderingstatemachineconstants.h	Wed Nov 03 11:45:09 2010 +0200
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2007,2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Constants used in upnprenderingstatemachine
+*
+*/
+
+#ifndef C_UPNPRENDERINGSTATEMACHINECONSTANTS_H
+#define C_UPNPRENDERINGSTATEMACHINECONSTANTS_H
+
+/**
+ * Constants enumerations for the Upnp API
+ * especially those needed in the rendering engine part.
+ */
+namespace Upnp
+    {
+
+    /**
+     * Commands
+     */
+    enum TCommand
+        {
+        ENone     = 0x0000, // no command
+        ESync     = 0x0001, // get in sync with the renderer
+        EPlay     = 0x0002, // requests to start playing
+           // (in RenderingStateMachine aMedia indicates the media to play)
+        EStop     = 0x0004, // requests to stop playback (fast to play again)
+        EClose    = 0x0008, // requests to close playback (a permanent stop)
+        EPause    = 0x0010, // request to pause
+        EResume   = 0x0020, // request to resume from pause
+        ERestart  = 0x0040, // start track from beginning
+        ECalibrate= 0x0080, // request to calibrate the position counter from
+                            // renderer
+        ESeek     = 0x0100, // seek (aParameter = position in ms)
+        ENext     = 0x0200, // skip to next track
+        EPrev     = 0x0400, // skip to previous track
+        EBack     = 0x0800, // skip to previous track, or track start if
+                            // current position is less than 3 seconds
+        EJump     = 0x1000,  // Start playing given track 
+                            // (aParameter = track index)
+        ESetUri   = 0x2000  // set uri
+        };
+
+    /**
+     * Properties
+     */
+    enum TProperty
+        {
+        EVolume   = 0x01,  // the volume property
+        EMute     = 0x02,  // the mute property
+        EMediaDuration = 0x04, // current track duration (ms) - read only
+        EPosition = 0x08,  // current track position (ms) - see ESeek command
+        EOptions  = 0x10,  // rendering options (see TRenderingOptions)
+        ECurrentIndex = 0x20, // Index of item currently playing.
+            // Note: can only be set when NOT playing.
+            // Note2: changes in the value are reported via
+            // CurrentIndexChanged()
+        ECurrentState = 0x40 // the state of the engine (TState) - read only
+        };
+
+    /**
+     * Generic rendering state
+     */
+    enum TState
+        {
+        EOffSync   = 0x0001, // not synchronised with renderer yet
+        EBusy      = 0x0010, // renderer is busy doing something else
+        EDead      = 0x0020, // unrecoverable error state
+        EStopped   = 0x0100, // renderer is idle
+        EBuffering = 0x1000, // media playback is being started in the 
+                             // renderer
+        EPlaying   = 0x2000, // renderer is playing media
+        EPaused    = 0x4000, // renderer is in pause state
+        // -------- masks ---------
+        EStateMaskInSync    = 0xFFF0, // any state where synchronised to 
+                                      // renderer
+        EStateMaskActive    = 0xFF00, // any state where can be used
+        EStateMaskRendering = 0XF000, // any state where some kind of output
+                                      // is going on
+        };
+    
+    /**
+     * extra information in RenderingStateMachine provided with state indicates
+     * reason for state transition
+     */
+    enum TStateInfo
+        {
+        ENoMedia = 0,
+            // no media initialised (typically the initial state)
+        EStopRequested = 1,
+            // stop was requested (by this engine or by external party)
+        ETrackCompleted = 2,
+            // track was fully completed
+        EPositionChanged = 3
+        };
+    
+    /**
+     * Mode in which the position is changing.
+     * This includes information of trick modes.
+     * this type is internal to rendering engine
+     */
+    enum TPositionMode
+        {
+        EPlayingNormally = 0,
+            // playback is going on normally
+        ESeekingForward = 1,
+            // fast seeking forward. New position will be ackowledged soon.
+        ESeekingBackward = 2,
+            // fast seeking backward New position will be ackowledged soon.
+        EBufferingData = 3,
+            // renderer is buffering data. Will return to PlayingNormally
+            // soon.
+        };
+    
+    /**
+     * Rendering options. Use this to optimise the engine to your
+     * specific needs.
+     * this type is internal to rendering engine.
+     * 
+     * NOTE: instructions for flag use on the rendering engine API:
+     * to turn on a flag:
+     *   engine->SetPropertyL( Upnp::EOptions,
+     *     engine->Property( Upnp::EOptions ) | EFlag );
+     * to turn off a flag:
+     *   engine->SetPropertyL( Upnp::EOptions,
+     *     engine->Property( Upnp::EOptions ) & ~EFlag );
+     */
+    enum TRenderingOptions
+        {
+        EPlaylistMode = 0x0001,
+            // play content in playlist mode, progress automatically.
+            // for images this means a timed slideshow.
+            // if flag disabled, only manual skip is supported.
+            // (this flag is on by default)
+        EAutoCalibratePosition = 0x0002,
+            // calibrate and update track position automatically.
+            // If position changed, sends PropertyChanged callback.
+            // (this flag is on by default)
+        EVolumeSupport = 0x0004,
+            // request support for volume in the renderer
+            // Clear this flag to disable all volume usage and avoid one
+            // unnecessary network operation. Clearing the flag would be
+            // only useful if you only have pure image source.
+            // (this flag is on by default)
+        ESafetyTimer = 0x0008,
+            // attaches a safety timer for all skip commands
+            // (next,prev,back,jump) so that client can safely call them
+            // directly from UI as often as required. Commands are only
+            // executed after the safety period. having a burst of 10
+            // "Next" commands will be converted internally to a
+            // single "Jump(current+10)" operation.
+        EConvertVolumeZeroToMute = 0x0100,
+            // convert client VOLUME 0 request to MUTE and back
+            // (this flag is on by default)
+        };
+    }
+
+#endif // C_UPNPRENDERINGSTATEMACHINECONSTANTS_H
+