--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/devsound/a3facf/inc/maudiocontextobserver.h Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+
+
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef MAUDIOCONTEXTOBSERVER_H
+#define MAUDIOCONTEXTOBSERVER_H
+
+#include <a3f/a3fbase.h>
+
+const TUid KUidA3FContextCommitUpdate = {0x1028343E};
+const TUid KUidA3FContextPreEmptedCommit = {0x1028343F};
+const TUid KUidA3FContextPreEmption = {0x10283440};
+const TUid KUidA3FContextPreEmptionUpdate = {0x10283441};
+const TUid KUidA3FContextUpdateComplete = {0x10283442};
+const TUid KUidA3FContextAbort = {0x10283443};
+
+/**
+ * KUidA3FContextCommitUpdate - Follows a Commit() call. Signals that Commit() has been successfully received by MMRC
+ * and that update callbacks are about to follow. Note will still be called if MMRC rejects the request for policy reasons
+ * – in which case, the callbacks will show the original value.
+ *if aError is not KErrNone, then the implementation tried to apply the change but this failed
+ * so that the implementation is “rolled-back” to the previous. However, KErrAbort says that this roll-back failed,
+ * and streams have been placed in a Dead state.
+ *
+ * KUidA3FContextPreEmptedCommit - Follows a Commit() call, but signals that that MMRC is doing a simultaneous pre-emption.
+ * Update callbacks are about to follow, but these relate to the pre-emption. The original request is lost.
+ * An error of KErrAbort says that the change MMRC requested failed, and typically streams are placed in a “Dead” mode.
+ *
+ * KUidA3FContextPreEmption - Initial indication to the client that it is to be pre-empted.
+ * The client should treat the Context and its Components as “locked” – see below.
+ *
+ * KUidA3FContextPreEmptionUpdate - Will follow a KUidA3FContextPreEmption and indicates that callbacks
+ * are about to start to indicate the update. An error of KErrAbort says that the change MMRC requested failed,
+ * and typically streams are placed in a “Dead” mode.
+ *
+ * KUidA3FContextUpdateComplete - Signals that all callbacks are complete – Commit() can be called again, if required.
+ *
+ * KUidA3FContextAbort - Error occurred due to the commit or pre-emption cycle itself –
+ * that is something to do with the associated message passing mechanism etc.
+ * this terminates the whole cycle, whatever the current state. It should leave the context in a “reasonable state”
+ *– usually the original state. aError gives the associated reason for this.
+ */
+
+/*
+ * Following Commit() or ContextEvent(KUidA3FContextPreEmption), the associated Context should be considered “locked”
+ * until the receipt of events KUidA3FContextCommitUpdate, KUidA3FContextPreEmptedCommit or KUidA3FContextPreEmptionUpdate.
+ * By locked it is meant that no changes shall be requested by the Client from the Context nor its associated Components,
+ * nor Commit() called.
+ *
+ * Following events KUidA3FContextCommitUpdate, KUidA3FContextPreEmptedCommit or KUidA3FContextPreEmptionUpdate,
+ * the Client can be requested changes to the Context and associated Components, but Commit() cannot be called.
+ *
+ * Following event KUidA3FContextUpdateComplete Commit() can be called.
+ *
+ * Following the receipt of event KUidA3FContextPreEmptedCommit or KUidA3FPreEmptionUpdate,
+ * any pending requested changes to the Context or its Components are lost – there is an implied call to MAudioContext::Reset().
+ */
+
+
+/**
+ * Defines the interface for observing context states.
+ */
+class MAudioContextObserver
+ {
+public:
+ /**
+ * Callback to context observer to show progression through Commit() and pre-emption cycles.
+ *
+ * @param a Uid giving the specific event.
+ * @param an error code. KErrNone if successful, otherwise one of the system wide error codes.
+ */
+ virtual void ContextEvent(TUid aEvent, TInt aError)=0;
+ };
+
+#endif // MAUDIOCONTEXTOBSERVER_H