diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/ecam.h --- a/epoc32/include/ecam.h Wed Mar 31 12:27:01 2010 +0100 +++ b/epoc32/include/ecam.h Wed Mar 31 12:33:34 2010 +0100 @@ -1,9 +1,9 @@ // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +// under the terms of "Eclipse Public License v1.0" // which accompanies this distribution, and is available -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// at the URL "http://www.eclipse.org/legal/epl-v10.html". // // Initial Contributors: // Nokia Corporation - initial contribution. @@ -13,8 +13,6 @@ // Description: // - - /** @file @publishedAll @@ -27,6 +25,10 @@ #include #include +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif + class MFrameBuffer; class RWsSession; class CWsScreenDevice; @@ -417,41 +419,6 @@ TTimeIntervalMicroSeconds iElapsedTime; }; -/** -This class is used to provide extra buffer informations through a custom interface. - -@see MCameraImageBuffer - -@publishedPartner -@prototype -*/ -class MCameraBuffer2 : public MCameraBuffer - { -public: - /** - Retrieves an array of uids which represents the class identifier used for buffer extension. - - @param aInterfaceUids - An array of uids which represents the class identifier. - - @return The error code. - */ - virtual TInt GetInterfaceUids(RArray& aInterfaceUids) = 0; - - /** - Gets a custom interface for extra buffer information. - - @param aInterface - The Uid of the particular interface function required for buffer information. - - @param aPtrInterface - The client has to cast the custom interface pointer to the appropriate type. - - @return The error code. - */ - virtual TInt CustomInterface(TUid aInterface, TAny*& aPtrInterface) = 0; - }; - /** Uid used to identify the event that the request to Reserve() has completed */ @@ -579,211 +546,6 @@ */ static const TUid KUidECamEventCameraSettingPreCaptureWarning = {KUidECamEventCameraSettingPreCaptureWarningUidValue}; static const TUid KUidECamEvent2CameraSettingPreCaptureWarning = {KUidECamEventCameraSettingPreCaptureWarningUidValue}; - -/** -Event indicating continuous zoom progess. This event is used for StartContinuousZoomL feature. This is a part of class -CCamera::CCameraAdvancedSettings. This event should be packed in TECAMEvent2 class. - -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera:: -NewDuplicate2L(): -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; - -Note: TECAMEvent2::iParam represents percentage continuous zoom completion. - -@note If zoom direction is EZoomDirectionWide, percentage completion will target minimum possible value as 100%. -@note If zoom direction is EZoomDirectionTele, percentage completion will target maximum possible value as 100%. - -@publishedPartner -@prototype -*/ -static const TUid KUidECamEvent2CameraSettingContinuousZoomPercentageCompletion = {KUidECamEvent2CameraSettingContinuousZoomPercentageCompletionUidValue}; - -/** -Notifies that unrequested feature changes have occurred. The method GetIndirectFeatureChangesL() is called to -retrieve the list of unrequested feature changes. The unrequested feature changes are ECAM component wide. - -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(): -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; - -Note: TECAMEvent2::iParam represents the TInt used to obtain a uid which represents the requested feature change. - -@publishedPartner -@prototype -*/ -static const TUid KUidECamEvent2IndirectFeatureChange = {KUidECamEvent2IndirectFeatureChangeUidValue}; - - -/** -Viewfinder fading effect has been set. -This event should be packed in TECAMEvent2 class. - -Note: TECAMEvent2::iParam represents viewfinder handle. - -@internalTechnology -*/ -static const TUid KUidECamEvent2ViewFinderFadingEffect = {KUidECamEvent2ViewFinderFadingEffectUidValue}; - -/** -Event indicating auto aperture is being used. -This event should be packed in TECAMEvent2 class. - -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera:: -NewDuplicate2L(): -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; - -Note: TECAMEvent2::iParam represents actual value of aperture being used if camera is capable of. Otherwise, KErrNotFound will be retrieved. - -@internalTechnology -*/ -static const TUid KUidECamEvent2CameraSettingAutoAperture = {KUidECamEvent2CameraSettingAutoApertureUidValue}; - -/** -Event providing focussing feedback. The focussing feedback will be provided whenever the focussing state changes for the -selected spot combination. -This event should be packed in TECAMEvent2 class. -Note: TECAMEvent2::iParam represents bitfield of chosen spots which are in focus. -Note: TECAMEvent2::iParam1 represents bitfield of chosen spots which are not in focus. - -@internalTechnology -*/ -static const TUid KECamEvent2ImageCaptureControlFocussingInformation = {KECamEvent2ImageCaptureControlFocussingInformationUidValue}; - -/** -Focussing spot combination. This event tells about completion of the setting operation for the spot combination. -This event should be packed in TECAMEvent2 class. - -@note static_cast(TECAMEvent2::iParam) represents the focus mode for - which the spot combination has to be set for receiving focussing feedback. - -@internalTechnology -*/ -static const TUid KUidECamEvent2ImageCaptureControlSpotCombination = {KUidECamEvent2ImageCaptureControlSpotCombinationUidValue}; - -/** -Viewfinder magnification has been set. -This event should be packed in TECAMEvent2 class. - -Note: TECAMEvent2::iParam represents viewfinder handle. - -@internalTechnology -*/ -static const TUid KUidECamEvent2ViewFinderMagnification = {KUidECamEvent2ViewFinderMagnificationUidValue}; - -/** -Notifies the current camera reserver that the camera control will be forcefully overtaken by another requesting client -after a specific time interval. - -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(): -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; - -@note TTimeIntervalMicroSeconds32(TECAMEvent2::iParam) represents the maximum time to wait. - TECAMEvent2::iParam needs to be passed as argument in order to construct the TTimeIntervalMicroSeconds32 object. - -Note: TECAMEvent2::iParam1 represents the priority of the requestor client to whom the camera control will be forcibly -passed after a specific time interval. - -@internalTechnology -*/ -static const TUid KUidECamEvent2CameraRequestForcedTimedTakeOver = {KUidECamEvent2CameraRequestForcedTimedTakeOverUidValue}; - -/** -Notifies the current camera reserver that another client is requesting for camera control in a specific time interval. - -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(): -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; - -@note TTimeIntervalMicroSeconds32(TECAMEvent2::iParam) represents the maximum requested time within which the current - reserver may release the camera if it wishes to do so. - TECAMEvent2::iParam needs to be passed as argument in order to construct the TTimeIntervalMicroSeconds32 object. - -Note: TECAMEvent2::iParam1 represents the priority of the requestor client to whom the camera control will be passed -should the current reserver wish to do so. - -@internalTechnology -*/ -static const TUid KUidECamEvent2CameraRequestTimedTakeOver = {KUidECamEvent2CameraRequestTimedTakeOverUidValue}; - -/** -Notifies the manual gain setting completion for the particular channel. - -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(): -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; - -Note: TECAMEvent2::iParam represents the specific channel for which the manual gain value has been set. - -@internalTechnology -*/ -static const TUid KUidECamEvent2CameraSettingManualGain = {KUidECamEvent2CameraSettingManualGainUidValue}; - -/** -Retrieves the optimal focussing feedback while using manual focus. This will be issued as a result of setting operation -CCamera::CCameraAdvancedSettings::SetFocusDistance(TInt aDistance). - -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(): -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; - -@note If TECAMEvent2::iParam > 1, information is unavailable; if TECAMEvent2::iParam < 0, error case. - Otherwise, static_cast(TECAMEvent2::iParam) retrieves whether optimal focussing has been achieved or not. - -@internalTechnology -*/ -static const TUid KUidECamEvent2CameraSettingFocusDistance = {KUidECamEvent2CameraSettingFocusDistanceUidValue}; - -/** -Instructs the client to change its priority in order to allow the legacy client to get hold of the camera. Client should -restore their priority when they receive the notification 'KUidECamEventCameraSettingRestoreClientPriority'. - -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(): -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; - -Note: TECAMEvent2::iParam represents the target priority to which the client should set itself using the method SetClientPriorityL() - -@internalTechnology -*/ -static const TUid KUidECamEvent2CameraSettingChangeClientPriority = {KUidECamEvent2CameraSettingChangeClientPriorityUidValue}; - -/** -Event indicating image enhancement setting has been applied. -This event should be packed in TECAMEvent2 class. - -Note: TECAMEvent2::iParam represents viewfinder handle. - -@internalTechnology -*/ -static const TUid KUidECamEvent2ViewFinderImageEnhancement = {KUidECamEvent2ViewFinderImageEnhancementUidValue}; - -/** -Provides the various available schemes for event filtering. This will inform how the listed uids have to be interpreted -by the implementation for filtering the events. - -@see CCamera::CCameraAdvancedSettings::RegisterEventsL(TECAMEventFilterScheme aEventFilter, const RArray& aEvents); -@see CCamera::CCameraAdvancedSettings::GetRegisterEventsL(TECAMEventFilterScheme aEventFilter, RArray& aEvents) const; - -@internalTechnology -*/ -enum TECAMEventFilterScheme - { - /** Black listing will mean not to receive specific events */ - EECAMEventFilterSchemeBlackList, - /** White listing will mean to receive only specific events */ - EECAMEventFilterSchemeWhiteList - }; /** Special type of TECAMEvent class used to retrieve some extra information from particular events received @@ -942,6 +704,7 @@ class CCameraPostImageCaptureControl; class CCameraVideoCaptureControl; class CCameraDirectSnapshot; + class CCameraContinuousZoom; public: /** Possible still image and video frame formats @@ -977,19 +740,18 @@ EFormatYUV420Interleaved = 0x0400, /** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0...V0... */ EFormatYUV420Planar = 0x0800, - /** 4:2:2 format, 8 bits per sample, UY0VY1. */ + /** 4:2:2 format, 8 bits per sample, UY0VY1. Maps to Graphics' EUidPixelFormatYUV_422Interleaved in pixelformats.h. */ EFormatYUV422 = 0x1000, - /** 4:2:2 format, 8 bits per sample, Y1VY0U. */ + /** 4:2:2 format, 8 bits per sample, Y1VY0U. Maps to Graphics' EUidPixelFormatYUV_422InterleavedReversed in pixelformats.h. */ EFormatYUV422Reversed = 0x2000, /** 4:4:4 format, 8 bits per sample, Y00U00V00 Y01U01V01... */ EFormatYUV444 = 0x4000, /** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0V0... */ EFormatYUV420SemiPlanar = 0x8000, /** CFbsBitmap object with display mode EColor16MU. */ - EFormatFbsBitmapColor16MU = 0x00010000, + EFormatFbsBitmapColor16MU = 0x00010000, /** Motion JPEG for video - @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L() - + @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(). @internalTechnology */ EFormatMJPEG = 0x00020000, @@ -997,11 +759,16 @@ /** Compressed H264 video format. @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(). - - @publishedPartner @prototype */ - EFormatEncodedH264 = 0x00040000 + EFormatEncodedH264 = 0x00040000, + + /** + 4:2:2 format, 8 bits per sample, Y0UY1V. Maps to Graphics' EUidPixelFormatYUV_422Reversed in pixelformats.h. + @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(). + @prototype + */ + EFormatYUV222ReversedV2 = 0x00080000 }; /** Specifies whether contrast is set automatically. */ @@ -1043,7 +810,8 @@ /** Specifies the type of exposure. - EExposureAuto is the default value. */ enum TExposure { - /** Set exposure automatically. Default, always supported. */ + /** Set exposure automatically. Default, always supported. + This may imply auto aperture so clients may receive a KUidEcamEvent2CameraSettingAutoAperture event notification some time later. */ EExposureAuto = 0x0000, /** Night-time setting for long exposures. */ EExposureNight = 0x0001, @@ -1063,7 +831,8 @@ EExposureProgram = 0x0080, /** Aperture setting is given priority. */ EExposureAperturePriority = 0x0100, - /** Shutter speed setting is given priority. */ + /** Shutter speed setting is given priority. + This may imply auto aperture so clients may receive a KUidEcamEvent2CameraSettingAutoAperture event notification some time later. */ EExposureShutterPriority = 0x0200, /** User selectable exposure value setting. */ EExposureManual = 0x0400, @@ -1096,42 +865,42 @@ EWBManual = 0x0080, /** Shade */ EWBShade = 0x0100, - /** auto skin - - If New2L()/NewDuplicate2L() are not used to create camera object, this - enum value would be considered as unrecognized and filtered out in 'supported' + /** auto skin + + If New2L()/NewDuplicate2L() are not used to create camera object, this + enum value would be considered as unrecognized and filtered out in 'supported' or 'getter' methods. */ EWBAutoSkin = 0x0200, - /** horizon - - If New2L()/NewDuplicate2L() are not used to create camera object, this - enum value would be considered as unrecognized and filtered out in 'supported' + /** horizon + + If New2L()/NewDuplicate2L() are not used to create camera object, this + enum value would be considered as unrecognized and filtered out in 'supported' or 'getter' methods. */ EWBHorizon = 0x0400, - /** Daylight Under Water - - If New2L()/NewDuplicate2L() are not used to create camera object, this - enum value would be considered as unrecognized and filtered out in 'supported' + /** Daylight Under Water + + If New2L()/NewDuplicate2L() are not used to create camera object, this + enum value would be considered as unrecognized and filtered out in 'supported' or 'getter' methods. */ EWBDaylightUnderWater = 0x0800 }; - + public: - /** + /** Determines the number of cameras on the device. @return Count of cameras present on the device. */ IMPORT_C static TInt CamerasAvailable(); - /** + /** @deprecated Use static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority); - + Creates an object representing a camera. - + @param aObserver Reference to class derived from MCameraObserver2 designed to receive notification of asynchronous event completion. @@ -1149,25 +918,25 @@ @leave KErrNotSupported if aCameraIndex is out of range. @leave KErrPermissionDenied if the application does not have the UserEnvironment capability. - + @capability UserEnvironment An application that creates a CCamera object must have the UserEnvironment capability. @capability MultimediaDD A process requesting or using this method that has MultimediaDD capability will - always have precedence over a process that does not have MultimediaDD. + always have precedence over a process that does not have MultimediaDD. - @note Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). - To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare + @note Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). + To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare themselves to receive unrecognised values. */ IMPORT_C static CCamera* NewL(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority); - - /** - Creates an object representing a camera. - Clients prepare themselves to receive unrecognised enum, uids etc. - + + /** + Creates an object representing a camera. + Clients prepare themselves to receive unrecognised enum, uids etc. + @param aObserver Reference to class derived from MCameraObserver2 designed to receive notification of asynchronous event completion. @@ -1185,7 +954,7 @@ @leave KErrNotSupported if aCameraIndex is out of range. @leave KErrPermissionDenied if the application does not have the UserEnvironment capability. - + @capability UserEnvironment An application that creates a CCamera object must have the UserEnvironment capability. @@ -1193,15 +962,15 @@ @capability MultimediaDD A process requesting or using this method that has MultimediaDD capability will always have precedence over a process that does not have MultimediaDD. - - @note Clients using this creation method should prepare themselves to receive any unrecognised enum values, uids + + @note Clients using this creation method should prepare themselves to receive any unrecognised enum values, uids from 'supported' or 'getter' methods */ IMPORT_C static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority); - - /** + + /** Creates an object representing a camera. - + @param aObserver Reference to class derived from MCameraObserver designed to receive notification of asynchronous event completion. @@ -1213,23 +982,23 @@ @leave KErrNotSupported if aCameraIndex is out of range. @leave KErrPermissionDenied if the application does not have the UserEnvironment capability. - + @return Pointer to a fully constructed CCamera object. Ownership is passed to the caller. - + @capability UserEnvironment An application that creates a CCamera object must have the UserEnvironment capability. - - @note Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). - To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare + + @note Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). + To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare themselves to receive unrecognised values. */ IMPORT_C static CCamera* NewL(MCameraObserver& aObserver,TInt aCameraIndex); - - /** + + /** @deprecated Use static CCamera* NewDuplicate2L(MCameraObserver2& aObserver,TInt aCameraHandle); - + Duplicates the original camera object for use by, for example, multimedia systems. May leave with KErrNoMemory or KErrNotFound if aCameraHandle is not valid. @@ -1720,6 +1489,10 @@ @leave KErrNoMemory @leave KErrNotReady if PowerOn() hasn't been called successfully. + @note Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture + at the same time may not be possible. In this case, the recommendation is to unprepare video capture before preparing + image capture if PrepareVideoCaptureL() has already been called. + @see CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters) */ virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex)=0; @@ -1751,6 +1524,10 @@ @leave KErrNotReady if PowerOn() hasn't been called successfully. + @note Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture + at the same time may not be possible. In this case, the recommendation is to unprepare video capture before preparing + image capture if PrepareVideoCaptureL() has already been called. + @see CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters) */ virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect)=0; @@ -1815,6 +1592,10 @@ @leave May leave with KErrNotSupported, KErrNoMemory, or KErrNotReady if PowerOn() hasn't been called successfully. + @note Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture + at the same time may not be possible. In this case, the recommendation is to unprepare image capture before preparing + video capture if PrepareImageCaptureL() has already been called. + @see CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters) */ virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer)=0; @@ -1848,6 +1629,10 @@ @leave KErrNoMemory, @leave KErrInUse if Reserve() hasn't been called successfully @leave KErrNotReady if PowerOn() hasn't been called successfully. + + @note Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture + at the same time may not be possible. In this case, the recommendation is to unprepare image capture before preparing + video capture if PrepareImageCaptureL() has already been called. @see CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters) */ @@ -1974,7 +1759,6 @@ /** @internalComponent - Returns the camera API version no. */ IMPORT_C TInt CameraVersion(); @@ -2051,68 +1835,12 @@ TTimeIntervalMicroSeconds iElapsedTime; }; -/** Specifies whether the camera is reserved or not. - The enumeration list may be extended in future. - -@publishedPartner -@prototype -*/ -enum TECamReserveStatus - { - /** Camera Status unknown */ - ECameraStatusUnknown, - /** Camera is reserved */ - ECameraReserved, - /** Camera is unreserved */ - ECameraUnReserved - }; - -/** Mixin base class for camera clients to handle the notification of Reserve status. - -Client must implement MReserveObserver in order to handle the notifications and take appropriate steps accordingly. - -@note By the time client gets unreserved status via callback, the camera may be on its way getting reserved by another client who - might be continuously polling for it. - So, there is no guarantee that the client will be able to reserve it. But it is guaranteed that the client will - receive the notification about change in reserve status. +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif -@publishedPartner -@prototype -*/ -class MReserveObserver - { -public: - /** - This notification is send to provide the reserve status for the camera. - - @param aCameraIndex - The camera index for which the Reserve status has to be provided. - - @param aReserveStatus - The reserve status for the camera. - - @param aErrorCode - The error value. - - @note If error is not KErrNone, then the client is expected to destroy the CCameraStatusWatch retrieved through - TReservedInfo::SubscribeReserveInfoL and re-subscribe if desired. - */ - virtual void ReserveStatus(TInt iCameraIndex, TECamReserveStatus aReserveStatus, TInt aErrorCode) =0; - }; +class MReserveObserver; -class CCameraStatusWatch; - -/** -@publishedPartner -@prototype - -Client uses it to asynchronously receive the reserve status of a camera index through MReserveObserver -*/ -class TReservedInfo - { -public: - IMPORT_C static void SubscribeReserveInfoL(MReserveObserver& aReserveObserver, TInt aCameraIndex, CCameraStatusWatch*& aCameraStatusWatch); - }; /** An active object class implemented by Symbian and used to subscribe for the updates in the Properties, retrieve the @@ -2123,13 +1851,10 @@ */ class CCameraStatusWatch : public CActive { - friend void TReservedInfo::SubscribeReserveInfoL(MReserveObserver& aReserveObserver, TInt aCameraIndex, CCameraStatusWatch*& aCameraStatusWatch); - public: IMPORT_C ~CCameraStatusWatch(); - + static CCameraStatusWatch* NewL(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId); private: - static CCameraStatusWatch* NewL(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId); CCameraStatusWatch(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId); void ConstructL(); @@ -2142,5 +1867,6 @@ TInt iCameraIndex; TInt iSecureId; }; + #endif // ECAM_H