diff -r 453dfc402455 -r 0aa8cc770c8a localconnectivityservice/generichid/tsrc/GenericHidTest/inc/tgenerichidapi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/generichid/tsrc/GenericHidTest/inc/tgenerichidapi.h Tue Aug 31 16:03:15 2010 +0300 @@ -0,0 +1,340 @@ +/* +* Copyright (c) 2004-2007 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: HID generic api test class +* +*/ + +#ifndef __TESTGEHERICHIDAPI_H +#define __TESTGEHERICHIDAPI_H + + +#include +#include +#include +#include "hidreportgenerator.h" +#include "hidtranslate.h" + +#include "CHidDriverPlugin.h" +#include "hiduids.h" + + +/** + * HID generic api test class + * + * @lib + * @since S60 v.3.2 + */ +NONSHARABLE_CLASS(CtGenericHIDAPI): public CBase, public MTransportLayer + { + public: + static CtGenericHIDAPI* NewL(); + static CtGenericHIDAPI* NewLC(); + + /** + * Destructor. + */ + virtual ~CtGenericHIDAPI(); + + public: + + /** + * Connect + * + * @since S60 v.3.2 + * @param aConnectionId connection id + * @param aDescriptor report descriptor + * @return None + */ + void ConnectL(TInt aConnectionId, const TDesC8& aDescriptor); + + /** + * Disconnect + * + * @since S60 v.3.2 + * @param aConnectionId a connection id + * @return None + */ + void DisconnectL(TInt aConnectionId); + + /** + * DataIn + * + * @since S60 v.3.2 + * @param aConnectionId connection id + * @param aDescriptor report descriptor + * @return error code + */ + TInt DataInL(TInt aConnectionId, const TDesC8& aDescriptor); + + TInt RunCountryCodeL(); + + TInt RunVendorIdL(); + + TInt RunProductIdL( ); + + TInt RunSetProtocolL(); + + TInt RunGetProtocoL( ); + + TInt RunGetReportL( ); + + TInt RunSetReportL(const TDesC8& aDescriptor ); + + TInt RunDataOutL( const TDesC8& aDescriptor ); + + TInt GetGetIdleL( ); + + TInt RunSetIdleL( ); + + TInt GetCommandResultL( ); + + TInt GetReportDescriptorL(); + + TInt CreateReportGeneratorL(); + + TInt DeleteReportGeneratorL(); + + TInt ReportGeneratorReport(); + + TInt ReportGeneratorSetFieldL( TBool aIsArray, TBool aOutOfRange, TBool aFieldNull, TBool aFieldCountZero, TBool aExistingUsageId, TBool aBadIndex ); + + TInt CreateReportTranslatorL( const TDesC8& aDescriptor, TBool aIsArray, TBool aFieldNull, TBool aFieldCountZero); + + //TInt CreateReportTranslator_FieldNullL( const TDesC8& aDescriptor ); + + TInt DeleteReportTranslatorL( ); + + TInt ReportTranslatorGetValueL( ); + + TInt ReportTranslatorValueL( ); + + TInt ReportTranslatorGetUsageIdL( TBool aBadControlIndex ); + + TInt ReportTranslatorUsageIdL( ); + + TInt ReportTranslatorRawValueL( ); + + TInt ReportTranslatorCountL( ); + + TInt CollectiontypeL( ); + TInt CollectionIsPhysicalL( ); + TInt CollectionIsLogicalL( ); + TInt CollectionIsReportL( ); + TInt CollectionIsNamedArrayL( ); + TInt CollectionIsUsageSwitchL( ); + TInt CollectionIsUsageModifierL( ); + + TInt CollectionIsApplicationL( ); + TInt CollectionUsagePageL( ); + TInt CollectionUsageL( ); + TInt CollectionCollectionCountL( ); + TInt CollectionFieldCountL( ); + TInt CollectionCollectionByIndexL( TBool aPresent ); + TInt CollectionFieldByIndexL( ); + + TInt ReportrootReportSizeBytes( ); + + + TInt FieldLogicalMaxL( ); + TInt FieldPhysicalMinL( ); + TInt FieldPhysicalMaxL( ); + TInt FieldUnitL( ); + TInt FieldUnitExponentL( ); + TInt FieldCountL( ); + TInt FieldSizeL( ); + TInt FieldOffsetL( TBool setReport ); + TInt FieldReportIdL( ); + TInt FieldIsInReportL( ); + TInt FieldUsagePageL( ); + TInt FieldDesignatorIndexL( ); + TInt FieldStringIndexL( ); + TInt FieldHasUsageL( ); + TInt FieldUsageArrayL( ); + TInt FieldUsageL( ); + TInt FieldUsageCountL( ); + TInt FieldClearUsageListL( ); + TInt FieldLastUsageL( TBool empty ); + TInt FieldAttributesL( ); + TInt FieldTypeL( ); + TInt FieldIsArrayL( ); + TInt FieldIsVariableL( ); + TInt FieldIsConstantL( ); + TInt FieldIsDataL( ); + TInt FieldSetLogicalMinL(); + TInt FieldSetLogicalMaxL( ); + TInt FieldSetPhysicalMinL( ); + TInt FieldSetPhysicalMaxL( ); + TInt FieldSetDesignatorMinL( ); + TInt FieldSetDesignatorMaxL( ); + TInt FieldSetUsageMinL( ); + TInt FieldSetUsageMaxL( ); + TInt FieldSetStringMinL( ); + TInt FieldSetStringMaxL( ); + TInt FieldSetLogicalRangeL( ); + TInt FieldSetUsageRangeL( ); + TInt FieldSetPhysicalRangeL( ); + TInt FieldSetStringRangeL( ); + TInt FieldSetDesignatorRangeL( ); + TInt FieldIsInputL( ); + TInt FieldIsOutputL( ); + TInt FieldIsFeatureL( ); + + + +private: //from MTransportLayer + + /** + * Request for the country code of the given device. + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @return country code. + */ + TUint CountryCodeL(TInt aConnID); + + /** + * Request for the vendor identifier for the given device. + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @return vendor id. + */ + TUint VendorIdL(TInt aConnID); + + /** + * Request for the product identifier for the given device. + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @return product id. + */ + TUint ProductIdL(TInt aConnID); + + /** + * Request for the current device report protocol. The protocol will be + * received as a control report via the CHidTransport::DataIn function + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @param aInterface The interface we want to get the protocol from + * @return None. + */ + void GetProtocolL(TInt aConnID, TUint16 aInterface); + + /** + * Request to put the device in the specified protocol + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @param aValue The requested protocol for the device (boot or report) + * @param aInterface The interface we want to set the protocol for + * @return None. + */ + void SetProtocolL(TInt aConnID, TUint16 aValue, + TUint16 aInterface); + + /** + * Request for a device report. The data will be received as a control report + * via the CHidTransport::DataIn function + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @param aReportType The type of report (input/output/feature) requested + * @param aReportID The specific report required + * @param aInterface The interface we want the report from + * @param aLength The expected length of the report buffer + * @return None. + */ + void GetReportL(TInt aConnID, TUint8 aReportType,TUint8 aReportID, + TUint16 aInterface, TUint16 aLength); + + /** + * Request to send a report to a device. The response will be reported via the + * CHidTransport::CommandResult function + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @param aReportType The type of report (input/output/feature) requested + * @param aReportID The specific report required to set + * @param aInterface The interface we want to send the report to + * @param aReport The report payload to be sent to the device + * @return None. + */ + void SetReportL(TInt aConnID, TUint8 aReportType,TUint8 aReportID, + TUint16 aInterface, const TDesC8& aReport); + + /** + * Request to send data to a device. There are no responses to this report from device. + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @param @param aReportID The specific report required + * @param aInterface The interface we want to send the report to + * @param aReport The report payload to be sent to the device + * @return None. + */ + void DataOutL(TInt aConnID, TUint8 aReportID, + TUint16 aInterface, const TDesC8& aReport); + + /** + * Request for the current idle rate of a report from the device. The response + * will be recevied via the CHidTransport::DataIn function + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @param aReportID The specific report to be queried + * @param aInterface The interface we want to query for idle rate + * @return None. + */ + void GetIdleL(TInt aConnID, TUint8 aReportID, + TUint16 aInterface); + + /** + * Request to set the current idle rate for a report on the device. + * The response will be received via the CHidTransport::CommandResult function + * + * @since S60 v3.2 + * @param aConnID The device identifier + * @param aReportID The specific report to be queried + * @param aDuration The time period between idle reports (4ms per bit. An + * interval of 0 disables idle reports so that Interrupt reports are only ever + * received when the reported data has changed + * @param aReportID The specific report to be queried + * @param aInterface The interface we want to query for idle rate + * @return None. + */ + void SetIdleL(TInt aConnID, TUint8 aDuration, TUint8 aReportID, + TUint16 aInterface); + + +private: + CtGenericHIDAPI(); + void ConstructL(); + + const CField* CreateConstCFieldL(); + CField* CreateCFieldL(); + +private: + CGenericHid* iGenHID; + MDriverAccess* iDriverAcces; + CReportGenerator* iReportGenerator; + TReportTranslator* iTranslator; + + CHidDriver* iHidDriver; + + RPointerArray iFieldList; + }; +#endif + +