--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/localconnectivityservice/generichid/tsrc/GenericHidTest/inc/tgenerichidapi.h Mon Jan 18 21:03:15 2010 +0200
@@ -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 <e32base.h>
+#include <hidinterfaces.h>
+#include <hidgeneric.h>
+#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<CField> iFieldList;
+ };
+#endif
+
+