williamr@2: /* williamr@2: * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Accessory information is encapsulated to this class. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef ACCMONITORINFO_H williamr@2: #define ACCMONITORINFO_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@4: #include williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CAccMonitorInfo; williamr@2: williamr@2: // EXTERNAL DATA TYPES williamr@2: /** williamr@2: * Type definition RConnectedAccessories consist of connected accessories williamr@2: * definitions which are defined in CAccMonitorInfo class. williamr@4: * Note: If Pushed onto Cleanup stack, make sure to use ResetAndDestroy Array API just before PopAndDestroy Cleanup stack API, else it causes array elements to leak its memory. williamr@2: */ williamr@2: typedef RPointerArray RConnectedAccessories; williamr@2: williamr@2: /** williamr@2: * Type definition RAccMonCapabilityArray consist of an array of accessory williamr@2: * capabilities. williamr@2: */ williamr@2: typedef RArray RAccMonCapabilityArray; williamr@2: williamr@2: // CLASSES williamr@2: /** williamr@2: * CAccMonitorInfo is a container for single accessory information. williamr@2: * williamr@2: * CAccMonitorInfo holds accessory capabilities and other accessory related williamr@2: * information. The data members of this class can be accessed with methods in williamr@2: * in this class. williamr@2: * williamr@2: * @see CAccMonitor for examples. williamr@2: * @lib AccMonitor williamr@2: * @since S60 5.0 williamr@2: */ williamr@2: class CAccMonitorInfo : public CBase williamr@2: { williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Symbian two phased constructor. williamr@2: */ williamr@2: static IMPORT_C CAccMonitorInfo* NewL(); williamr@2: williamr@2: /** williamr@2: * Symbian two phased constructor. williamr@2: */ williamr@2: static IMPORT_C CAccMonitorInfo* NewLC(); williamr@2: williamr@2: /** williamr@2: * Symbian two phased constructor. williamr@2: */ williamr@2: static IMPORT_C CAccMonitorInfo* NewL( const CAccMonitorInfo* aAccMonInfo ); williamr@2: williamr@2: /** williamr@2: * Symbian two phased constructor. williamr@2: */ williamr@2: static IMPORT_C CAccMonitorInfo* NewLC( const CAccMonitorInfo* aAccMonInfo ); williamr@2: williamr@2: /** williamr@2: * Reset the instance values. williamr@2: */ williamr@2: inline void Reset(); williamr@2: williamr@2: /** williamr@2: * Gets the accessory device type defined for this connected accessory. williamr@2: * williamr@2: * @return The accessory device type. williamr@2: */ williamr@2: inline TAccMonCapability AccDeviceType() const; williamr@2: williamr@2: /** williamr@2: * Gets the accessory physical connection defined for this connected williamr@2: * accessory. williamr@2: * williamr@2: * @return The accessory physical connection. williamr@2: */ williamr@2: inline TAccMonCapability AccPhysicalConnection() const; williamr@2: williamr@2: /** williamr@2: * Gets the accessory device address defined for this connected williamr@2: * accessory. williamr@2: * williamr@2: * @return This accessory's device address. williamr@2: */ williamr@2: inline TUint64 AccDeviceAddress() const; williamr@2: williamr@2: /** williamr@2: * Gets a capability that is defined in the array for this connected williamr@2: * accessory. If the array of this class is empty and this function is williamr@2: * used this function will panic. williamr@2: * williamr@2: * @param aIndex is the index where some capability needs to be getted. williamr@2: * @return TAccMonCapability the capability in that index. williamr@2: */ williamr@2: inline TAccMonCapability AccCapabilityAtIndex( TInt aIndex ) const; williamr@2: williamr@2: /** williamr@2: * Gets the count of objects in the array. williamr@2: * williamr@2: * @return TInt the size of array. williamr@2: */ williamr@2: inline TInt Count() const; williamr@2: williamr@2: /** williamr@2: * Checks if some capability is defined in this connected accessory. williamr@2: * williamr@2: * @param aCapability is the capability definition that needs to be williamr@2: * checked if it is defined for this accessory. williamr@2: * @return ETrue if this capability is defined. williamr@2: */ williamr@2: inline TBool Exists( TAccMonCapability aCapability ) const; williamr@2: williamr@2: /** williamr@2: * Checks if a group of capabilities are defined for this accessory. williamr@2: * aCapabilityArray is the array of capabilities that need to be checked. williamr@2: * williamr@2: * @param aCapabilityArray is the array of capability definitionion that need to be williamr@2: * checked if they are defined for this accessory. williamr@2: * @return ETrue if these capabilities is defined. williamr@2: */ williamr@2: IMPORT_C TBool Exists( RAccMonCapabilityArray& aCapabilityArray ) const; williamr@2: williamr@2: /** williamr@2: * Copy function for this class. williamr@2: * williamr@2: * @param aAccMonInfo is the instance from what the copy needs to be made of. williamr@2: * @return CAccMonitorInfo the copy of this class. williamr@2: */ williamr@2: IMPORT_C void CopyL( const CAccMonitorInfo* aAccMonInfo ); williamr@2: williamr@2: /** williamr@2: * Comparison function for this class. williamr@2: * williamr@2: * @param aAccMonInfo is the instance what needs to be compared. williamr@2: * @return ETrue if comparison matches. williamr@2: */ williamr@2: IMPORT_C TBool CompareL( const CAccMonitorInfo* aAccMonInfo ) const; williamr@2: williamr@2: /** williamr@2: * Destructor williamr@2: */ williamr@2: virtual ~CAccMonitorInfo(); williamr@2: williamr@2: private: williamr@2: williamr@2: friend class CAccMonitorContainer; williamr@2: williamr@2: /** williamr@2: * Default Constructor williamr@2: */ williamr@2: CAccMonitorInfo(); williamr@2: williamr@2: /** williamr@2: * Symbian OS 2nd phase constructor williamr@2: */ williamr@2: void ConstructL(); williamr@2: williamr@2: /** williamr@2: * Symbian OS 2nd phase constructor williamr@2: */ williamr@2: void ConstructL( const CAccMonitorInfo* aAccMonInfo ); williamr@2: williamr@2: /** williamr@2: * Assignment operator is hidden so that clients cannot use the williamr@2: * assignement to this class. Instead the CopyL method should be used. williamr@2: */ williamr@2: void operator=( CAccMonitorInfo aAccInfo ); williamr@2: williamr@2: private: williamr@2: williamr@2: // An array to hold the capabilities for this instance williamr@2: RAccMonCapabilityArray iAccCapabilityArray; williamr@2: williamr@2: // Defines device type for this accessory williamr@2: TAccMonCapability iAccessoryDeviceType; williamr@2: williamr@2: // Defines physical connection for this accessory williamr@2: TAccMonCapability iAccessoryPhysicalConnection; williamr@2: williamr@2: // Defines device address for this accessory, not defined allways williamr@2: TUint64 iDeviceAddress; williamr@2: williamr@2: // A numerical definition to point the correct accessory williamr@2: TInt iAccessoryID; williamr@2: williamr@2: // A reserved member variable for future use. williamr@2: TInt iReserved1; williamr@2: williamr@2: // A reserved member variable for future use. williamr@2: TInt iReserved2; williamr@2: }; williamr@2: williamr@4: #include williamr@2: williamr@2: #endif // ACCMONITORINFO_H williamr@2: williamr@2: // End of File