# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1274783910 -10800 # Node ID 2553637c2525721d2e1f2c3b8dfa3b020222a461 # Parent 2702348f1fe7f7182a2aa8a6799c4438e772b91a Revision: 200919 Kit: 2010121 diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/dun/atext/inc/DunAtCmdHandler.h --- a/localconnectivityservice/dun/atext/inc/DunAtCmdHandler.h Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/dun/atext/inc/DunAtCmdHandler.h Tue May 25 13:38:30 2010 +0300 @@ -86,6 +86,11 @@ TInt iDecodeIndex; /** + * Index in iInputBuffer for extended character position + */ + TInt iExtendedIndex; + + /** * Previous character in parsing */ TChar iPrevChar; @@ -96,6 +101,21 @@ TBool iPrevExists; /** + * Flag to indicate if assignment mark found + */ + TBool iAssignFound; + + /** + * Flag to indicate if processing inside quotes + */ + TBool iInQuotes; + + /** + * Flag to indicate if special subcommand found + */ + TBool iSpecialFound; + + /** * Buffer for parsing */ TBuf8 iDecodeBuffer; @@ -519,12 +539,10 @@ * @since S60 5.0 * @param aDes String descriptor * @param aStartIndex Start index for search - * @pram aExtended ETrue if extended command, EFalse otherwise * @return Index if found, KErrNotFound otherwise */ TInt FindStartOfDecodedCommand( TDesC8& aDes, - TInt aStartIndex, - TBool& aExtended ); + TInt aStartIndex ); /** * Checks if character is delimiter character @@ -545,16 +563,6 @@ TBool IsExtendedCharacter( TChar aCharacter ); /** - * Checks extended command - * - * @since S60 5.0 - * @param aStartIndex Start index (doesn't change) - * @param aEndIndex End index (changes) - * @return ETrue if end of extended found, EFalse otherwise - */ - TBool CheckExtendedCommand( TInt aStartIndex, TInt& aEndIndex ); - - /** * Checks special command * * @since S60 5.0 @@ -566,36 +574,68 @@ TInt& aEndIndex ); /** - * Checks basic command + * Saves character decode state for a found character * - * @since S60 5.0 + * @since TB9.2 + * @param aCharacter Character to save a state for + * @param aAddSpecial ETrue to add character for special command, + * EFalse otherwise + * @return Symbian error code on error, KErrNone otherwise + */ + void SaveFoundCharDecodeState( TChar aCharacter, + TBool aAddSpecial=ETrue ); + + /** + * Saves character decode state for a not found character + * + * @since TB9.2 * @param aStartIndex Start index (doesn't change) * @param aEndIndex End index (changes) - * @param aACmdFound ETrue if one character "A" command found, - * EFalse otherwise * @return Symbian error code on error, KErrNone otherwise */ - TInt CheckBasicCommand( TInt aStartIndex, - TInt& aEndIndex, - TBool& aOneCharCmd ); + void SaveNotFoundCharDecodeState(); /** - * Check if any one character command + * Find quotes within subcommands * - * @since S60 5.0 + * @since TB9.2 + * @param aCharacter Character to check * @param aStartIndex Start index (doesn't change) - * @return ETrue if any one character command, EFalse otherwise + * @param aEndIndex End index (changes) + * @return Symbian error code on error, KErrNone otherwise */ - TBool IsOneCharacterCommand( TInt aStartIndex ); + TBool FindSubCommandQuotes( TChar aCharacter, TInt aStartIndex, TInt& aEndIndex ); /** - * Check if one character "A" command + * Check if in next subcommand's extended border * - * @since S60 5.0 + * @since TB9.2 + * @param aCharacter Extended character to check * @param aStartIndex Start index (doesn't change) - * @return ETrue if one character "A" command, EFalse otherwise + * @param aEndIndex End index (changes) + * @return ETrue if in next command's extended border, EFalse otherwise */ - TBool IsOneCharacterACommand( TInt aStartIndex ); + TBool IsExtendedBorder( TChar aCharacter, TInt aStartIndex, TInt& aEndIndex ); + + /** + * Finds subcommand with alphanumeric borders + * + * @since TB9.2 + * @param aCharacter Character to check + * @param aEndIndex End index (changes) + * @return ETrue if alpha border found, EFalse otherwise + */ + TBool FindSubCommandAlphaBorder( TChar aCharacter, TInt& aEndIndex ); + + /** + * Finds subcommand + * + * @since TB9.2 + * @param aStartIndex Start index (doesn't change) + * @param aEndIndex End index (changes) + * @return Symbian error code on error, KErrNone otherwise + */ + TInt FindSubCommand( TInt aStartIndex, TInt& aEndIndex ); /** * Check if "A/" command diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/dun/atext/inc/DunAtSpecialCmdHandler.h --- a/localconnectivityservice/dun/atext/inc/DunAtSpecialCmdHandler.h Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/dun/atext/inc/DunAtSpecialCmdHandler.h Tue May 25 13:38:30 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -21,13 +21,13 @@ #include #include -const TInt KInputBufLength = (512 + 1); // 512 chars for command + +const TInt KInputBufLength = (512 + 1); // Set this the same as in KDunInputBufLength /** * Class for special AT command handler * * @lib dunatext.lib - * @since S60 v5.0 + * @since TB9.2 */ NONSHARABLE_CLASS( CDunAtSpecialCmdHandler ) : public CBase { @@ -45,23 +45,56 @@ * Destructor. */ ~CDunAtSpecialCmdHandler(); - + public: - - TBool IsCompleteSubCommand(TChar aCharacter); - TBool IsCompleteSubCommand(TDesC8& aDes, TInt aStartIndex, TInt& aEndIndex); + + /** + * Checks if the command has to be treated special way. + * For example in case of MAC, it sends command AT&FE0Q0V1&C1&D2+IFC=3,1. + * meaning there is no delimiters in the command. + * In case of MAC we try to search AT&F (sub command) string from the + * beginning of the command. + * Search is done string basis. + * + * @since TB9.2 + * @param aCharacter Character to add + * @return ETrue if data is ready for comparison, EFalse otherwise + */ + TBool IsCompleteSubCommand( TChar aCharacter ); + + /** + * Resets the buffer used for comparisons + * + * @since TB9.2 + * @return None + */ + void ResetComparisonBuffer(); private: CDunAtSpecialCmdHandler(); void ConstructL(); - - TBool IsDataReadyForComparison(TInt aLength); + + /** + * Defines when comparison is excecuted, checks if the data lengths are + * equal. + * + * @since TB9.2 + * @return ETrue if data is ready for comparison, EFalse otherwise + */ + TBool IsDataReadyForComparison( TInt aLength ); + + /** + * Defines minimum length of the special commands. + * + * @since TB9.2 + * @return Minimum length of the special commands + */ TInt MinimumLength(); +private: // data -private: // data /** * Buffer for temporary AT command input */ @@ -70,7 +103,8 @@ /** * Special commands for parsing */ - CDesC8Array *iSpecialCmds; + CDesC8Array *iSpecialCmds; + }; #endif // C_CDUNATSPECIALCMDHANDLER_H diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp --- a/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp Tue May 25 13:38:30 2010 +0300 @@ -377,8 +377,12 @@ iCommand = NULL; iDecodeInfo.iFirstDecode = ETrue; iDecodeInfo.iDecodeIndex = KErrNotFound; + iDecodeInfo.iExtendedIndex = KErrNotFound; iDecodeInfo.iPrevChar = 0; iDecodeInfo.iPrevExists = EFalse; + iDecodeInfo.iAssignFound = EFalse; + iDecodeInfo.iInQuotes = EFalse; + iDecodeInfo.iSpecialFound = EFalse; iEditorModeInfo.iContentFound = EFalse; iCmdPusher = NULL; iEcomListen = NULL; @@ -882,11 +886,8 @@ TDunDecodeInfo oldInfo = iDecodeInfo; iDecodeInfo.iDecodeBuffer.Zero(); // Find start of decode command from input buffer - TBool extendedCmd = EFalse; TInt startIndex = iDecodeInfo.iDecodeIndex; - startIndex = FindStartOfDecodedCommand( iInputBuffer, - startIndex, - extendedCmd ); + startIndex = FindStartOfDecodedCommand( iInputBuffer, startIndex ); if ( startIndex < 0 ) { RestoreOldDecodeInfo( aPeek, oldInfo ); @@ -894,24 +895,12 @@ return EFalse; } // Find end of decode command from input buffer - TBool extendedEnd = EFalse; - TBool oneCharCmd = EFalse; TBool specialCmd = EFalse; TInt endIndex = KErrNotFound; - if ( extendedCmd ) + specialCmd = CheckSpecialCommand( startIndex, endIndex ); + if ( !specialCmd ) { - if( iAtSpecialCmdHandler->IsCompleteSubCommand(iInputBuffer, startIndex, endIndex) == EFalse ) - { - extendedEnd = CheckExtendedCommand( startIndex, endIndex ); - } - } - else - { - specialCmd = CheckSpecialCommand( startIndex, endIndex ); - if ( !specialCmd ) - { - CheckBasicCommand( startIndex, endIndex, oneCharCmd ); - } + FindSubCommand( startIndex, endIndex ); } if ( endIndex < startIndex ) { @@ -926,7 +915,7 @@ iParseInfo.iLimit = cmdLength; } // Next create a new command - if ( !iDecodeInfo.iFirstDecode && !oneCharCmd && !specialCmd ) + if ( !iDecodeInfo.iFirstDecode && !specialCmd ) { _LIT( KAtMsg, "AT" ); iDecodeInfo.iDecodeBuffer.Append( KAtMsg ); @@ -939,10 +928,6 @@ // Set index for next round iDecodeInfo.iFirstDecode = EFalse; iDecodeInfo.iDecodeIndex = endIndex + 1; - if ( extendedEnd ) // skip the extra ';' - { - iDecodeInfo.iDecodeIndex++; - } RestoreOldDecodeInfo( aPeek, oldInfo ); FTRACE(FPrint( _L("CDunAtCmdHandler::ExtractNextDecodedCommand() complete") )); return ETrue; @@ -1008,35 +993,19 @@ // --------------------------------------------------------------------------- // TInt CDunAtCmdHandler::FindStartOfDecodedCommand( TDesC8& aDes, - TInt aStartIndex, - TBool& aExtended ) + TInt aStartIndex ) { FTRACE(FPrint( _L("CDunAtCmdHandler::FindStartOfDecodedCommand()") )); - aExtended = EFalse; TInt i; TInt count = aDes.Length(); for ( i=aStartIndex; i| + // border must be detected but only for a "basic" command, not for + // extended. + if ( iDecodeInfo.iExtendedIndex<0 && iDecodeInfo.iPrevExists && + iDecodeInfo.iPrevChar.IsDigit() && aCharacter.IsAlpha() ) + { + aEndIndex--; + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommandAlphaBorder() (N|A) complete") )); + return ETrue; + } + // The code below is for the following type of cases: + // (do not check alphanumeric borders if "=" set without quotes): + // AT+CMD=a + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommandAlphaBorder() (skip) complete") )); + return EFalse; + } + if ( !iDecodeInfo.iPrevExists || !aCharacter.IsAlpha() ) + { + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommandAlphaBorder() (not found) complete") )); + return EFalse; + } + if ( iDecodeInfo.iPrevChar.IsAlpha() ) + { + // The check below detects the following type of cases + // (note that special handling is needed to separate the Alpha|Alpha boundary): + // AT&FE0 + if ( iDecodeInfo.iSpecialFound ) + { + // Special command was found before and this is Alpha|Alpha boundary -> end + aEndIndex--; + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommandAlphaBorder() (special) complete") )); + return ETrue; + } + // The code below is for the following type of cases + // (note there is no border between C|M, for example -> continue): + // ATCMD + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommandAlphaBorder() (continue) complete") )); + return EFalse; + } + // The code below is for skipping the following type of cases: + // AT+CMD [the '+' must be skipped] + if ( aEndIndex-1 == iDecodeInfo.iExtendedIndex ) + { + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommandAlphaBorder() (extended) complete") )); + return EFalse; + } + // The code below is for the following type of cases: + // ATCMD?ATCMD + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommandAlphaBorder() (boundary) complete") )); + aEndIndex--; + return ETrue; + } + +// --------------------------------------------------------------------------- +// Finds subcommand +// --------------------------------------------------------------------------- +// +TInt CDunAtCmdHandler::FindSubCommand( TInt aStartIndex, TInt& aEndIndex ) + { + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommand()") )); aEndIndex = aStartIndex; - aOneCharCmd = EFalse; - TBool inQuotes = EFalse; + TBool found = EFalse; TInt length = iInputBuffer.Length(); - iDecodeInfo.iPrevExists = EFalse; - if ( aStartIndex < length ) - { - TChar character = iInputBuffer[aStartIndex]; - if ( IsOneCharacterCommand(aStartIndex) ) - { - aOneCharCmd = ETrue; - // Without "endIndex++" here - FTRACE(FPrint( _L("CDunAtCmdHandler::CheckBasicCommand() (X) complete") )); - return KErrNone; - } - } + iDecodeInfo.iAssignFound = EFalse; + iDecodeInfo.iInQuotes = EFalse; + iDecodeInfo.iExtendedIndex = KErrNotFound; + SaveNotFoundCharDecodeState(); + iAtSpecialCmdHandler->ResetComparisonBuffer(); // just to be sure for ( ; aEndIndex + if ( IsDelimiterCharacter(character) ) { aEndIndex--; - FTRACE(FPrint( _L("CDunAtCmdHandler::CheckBasicCommand() (S or extended) complete") )); + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommand() (delimiter) complete") )); return KErrNone; } - if ( !iDecodeInfo.iPrevExists ) + // The check below detects the following type of cases: + // ATCMD+CMD [first + as delimiter] + // AT+CMD+CMD [second + as delimiter] + if ( IsExtendedCharacter(character) ) { - iDecodeInfo.iPrevExists = ETrue; - iDecodeInfo.iPrevChar = character; - continue; - } - if ( IsOneCharacterCommand(aEndIndex) ) - { - aEndIndex--; - FTRACE(FPrint( _L("CDunAtCmdHandler::CheckBasicCommand() (one char) complete") )); + found = IsExtendedBorder( character, aStartIndex, aEndIndex ); + if ( !found ) + { + continue; + } + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommand() (extended) complete") )); return KErrNone; } - if ( character.IsAlpha() && !iDecodeInfo.iPrevChar.IsAlpha() ) + found = FindSubCommandAlphaBorder( character, aEndIndex ); + if ( found ) { - aEndIndex--; - FTRACE(FPrint( _L("CDunAtCmdHandler::CheckBasicCommand() (boundary) complete") )); + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommand() (alpha sub) complete") )); return KErrNone; } - iDecodeInfo.iPrevExists = ETrue; - iDecodeInfo.iPrevChar = character; + SaveFoundCharDecodeState( character ); } aEndIndex--; - FTRACE(FPrint( _L("CDunAtCmdHandler::CheckBasicCommand() (not found) complete") )); + FTRACE(FPrint( _L("CDunAtCmdHandler::FindSubCommand() (not found) complete") )); return KErrNotFound; } // --------------------------------------------------------------------------- -// Check if any one character command -// --------------------------------------------------------------------------- -// -TBool CDunAtCmdHandler::IsOneCharacterCommand( TInt aIndex ) - { - FTRACE(FPrint( _L("CDunAtCmdHandler::IsOneCharacterCommand()") )); - if ( aIndex<0 || aIndex>=iInputBuffer.Length() ) - { - FTRACE(FPrint( _L("CDunAtCmdHandler::IsOneCharacterCommand() (index out of bounds) complete") )); - return EFalse; - } - TChar character = iInputBuffer[aIndex]; - if ( character==',' || character==';' || character=='@' || character=='!' || - IsOneCharacterACommand(aIndex) ) - { - FTRACE(FPrint( _L("CDunAtCmdHandler::IsOneCharacterCommand() complete") )); - return ETrue; - } - FTRACE(FPrint( _L("CDunAtCmdHandler::IsOneCharacterCommand() (not found) complete") )); - return EFalse; - } - -// --------------------------------------------------------------------------- -// Check if one character "A" command -// --------------------------------------------------------------------------- -// -TBool CDunAtCmdHandler::IsOneCharacterACommand( TInt aIndex ) - { - FTRACE(FPrint( _L("CDunAtCmdHandler::IsOneCharacterACommand()") )); - if ( aIndex<0 || aIndex>=iInputBuffer.Length() ) - { - FTRACE(FPrint( _L("CDunAtCmdHandler::IsOneCharacterACommand() (index out of bounds) complete") )); - return EFalse; - } - if ( iInputBuffer[aIndex]!='a' && iInputBuffer[aIndex]!='A' ) - { - FTRACE(FPrint( _L("CDunAtCmdHandler::IsOneCharacterACommand() (not found) complete") )); - return EFalse; - } - TBool prevAlpha = EFalse; - TBool nextAlpha = EFalse; - TBool nextSlash = EFalse; - TInt length = iInputBuffer.Length(); - if ( iDecodeInfo.iPrevExists && iDecodeInfo.iPrevChar.IsAlpha() ) - { - prevAlpha = ETrue; - } - if ( aIndex+1 < length ) - { - TChar nextChar = iInputBuffer[aIndex+1]; - if ( nextChar.IsAlpha() ) - { - nextAlpha = ETrue; - } - if ( nextChar == '/' ) - { - nextSlash = ETrue; - } - } - if ( prevAlpha || nextAlpha || nextSlash ) - { - FTRACE(FPrint( _L("CDunAtCmdHandler::IsOneCharacterACommand() (not found) complete") )); - return EFalse; - } - FTRACE(FPrint( _L("CDunAtCmdHandler::IsOneCharacterACommand() (complete) complete") )); - return ETrue; - } - -// --------------------------------------------------------------------------- // Check if "A/" command // --------------------------------------------------------------------------- // diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/dun/atext/src/DunAtSpecialCmdHandler.cpp --- a/localconnectivityservice/dun/atext/src/DunAtSpecialCmdHandler.cpp Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/dun/atext/src/DunAtSpecialCmdHandler.cpp Tue May 25 13:38:30 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -18,11 +18,13 @@ #include "DunAtSpecialCmdHandler.h" #include "DunDebug.h" +const TInt KDefaultGranularity = 1; + // AT command(s) below is part of the AT&FE0Q0V1&C1&D2+IFC=3,1. command which -// is sent by MAC -_LIT8(KSpecialATCmd1, "AT&F"); -// Number of special commands -const TInt KDefaultGranularity = 1; +// is sent by MAC. There is no delimiter between "AT&F" and "E0". +// Only list those commands where alphabetical boundary detection is needed +// (i.e. "AT&F0" is not needed as "AT&F0E0" has non-alphabetical boundary) +_LIT8( KSpecialATCmd1, "AT&F" ); // --------------------------------------------------------------------------- // Two-phased constructor. @@ -42,7 +44,7 @@ // --------------------------------------------------------------------------- // CDunAtSpecialCmdHandler::CDunAtSpecialCmdHandler() - { + { } // --------------------------------------------------------------------------- @@ -51,9 +53,9 @@ // void CDunAtSpecialCmdHandler::ConstructL() { - iSpecialCmds = new (ELeave) CDesC8ArrayFlat(KDefaultGranularity); - // Add here all special commands which need to be handled - iSpecialCmds->AppendL(KSpecialATCmd1); + iSpecialCmds = new (ELeave) CDesC8ArrayFlat( KDefaultGranularity ); + // Add here all special commands which need to be handled + iSpecialCmds->AppendL( KSpecialATCmd1 ); } // --------------------------------------------------------------------------- @@ -68,36 +70,35 @@ } // --------------------------------------------------------------------------- -// Checks if the command has to be treated special way +// Checks if the command has to be treated special way. // For example in case of MAC, it sends command AT&FE0Q0V1&C1&D2+IFC=3,1. // meaning there is no delimiters in the command. // In case of MAC we try to search AT&F (sub command) string from the beginning -// of the command. +// of the command. // Search is done character by character basis. // --------------------------------------------------------------------------- // -TBool CDunAtSpecialCmdHandler::IsCompleteSubCommand (TChar aCharacter) +TBool CDunAtSpecialCmdHandler::IsCompleteSubCommand( TChar aCharacter ) { FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand()") )); - iBuffer.Append(aCharacter); + iBuffer.Append( aCharacter ); TBool completeSubCmd = EFalse; - - if( !IsDataReadyForComparison( iBuffer.Length()) ) + + if( !IsDataReadyForComparison(iBuffer.Length()) ) { // No need to do comparison because we don't have correct amount of data FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand(), no need to compare") )); return completeSubCmd; - } - + } + TInt count = iSpecialCmds->Count(); - for( TInt i = 0 ; i < count ; i++ ) + for ( TInt i=0; iMdcaPoint(i).Compare(iBuffer) == 0 ) { FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand(), match found, cmd index %d"), i )); // Reset internal buffer for next comparison. - iBuffer.FillZ(); - iBuffer.Zero(); + ResetComparisonBuffer(); completeSubCmd = ETrue; break; } @@ -107,57 +108,34 @@ } // --------------------------------------------------------------------------- -// Checks if the command has to be treated special way -// For example in case of MAC, it sends command AT&FE0Q0V1&C1&D2+IFC=3,1. -// meaning there is no delimiters in the command. -// In case of MAC we try to search AT&F (sub command) string from the beginning -// of the command. -// Search is done string basis. +// Resets the buffer used for comparisons // --------------------------------------------------------------------------- // -TBool CDunAtSpecialCmdHandler::IsCompleteSubCommand(TDesC8& aDes, TInt aStartIndex, TInt& aEndIndex) +void CDunAtSpecialCmdHandler::ResetComparisonBuffer() { - FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand()") )); - TBool completeSubCmd = EFalse; - if( aDes.Length() < MinimumLength() || aStartIndex != 0 ) - { - // No need to do comparison because we don't have correct amount of data or - // we are not at the beginning of the input buffer (non decoded buffer) - FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand(), no need to compare") )); - return completeSubCmd; - } - - TInt count = iSpecialCmds->Count(); - for( TInt i = 0 ; i < count ; i++ ) - { - TInt length = iSpecialCmds->MdcaPoint(i).Length(); - TPtrC8 cmd = aDes.Mid(0, length); - if( iSpecialCmds->MdcaPoint(i).Compare(cmd) == 0 ) - { - FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand(), match found, cmd index %d"), i )); - aEndIndex = length - 1; - completeSubCmd = ETrue; - break; - } - } - FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsCompleteSubCommand() complete") )); - return completeSubCmd; + FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::ResetComparisonBuffer()") )); + iBuffer.FillZ(); + iBuffer.Zero(); + FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::ResetComparisonBuffer() complete") )); } // --------------------------------------------------------------------------- // Defines when comparison is excecuted, checks if the data lengths are equal. // --------------------------------------------------------------------------- // -TBool CDunAtSpecialCmdHandler::IsDataReadyForComparison(TInt aLength) +TBool CDunAtSpecialCmdHandler::IsDataReadyForComparison( TInt aLength ) { + FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsDataReadyForComparison()") )); TInt count = iSpecialCmds->Count(); - for( TInt i = 0 ; i < count ; i++ ) + for ( TInt i=0; iMdcaPoint(i).Length() == aLength ) { + FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsDataReadyForComparison() (ready) complete") )); return ETrue; } } + FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::IsDataReadyForComparison() (not ready) complete") )); return EFalse; } @@ -167,9 +145,10 @@ // TInt CDunAtSpecialCmdHandler::MinimumLength() { + FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::MinimumLength()") )); TInt length = iSpecialCmds->MdcaPoint(0).Length(); TInt count = iSpecialCmds->Count(); - for( TInt i = 1 ; i < count ; i++ ) + for ( TInt i=1; iMdcaPoint(i).Length() < length ) { @@ -177,5 +156,6 @@ break; } } + FTRACE(FPrint( _L("CDunAtSpecialCmdHandler::MinimumLength() complete") )); return length; } diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/dun/utils/src/DunNoteHandler.cpp --- a/localconnectivityservice/dun/utils/src/DunNoteHandler.cpp Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/dun/utils/src/DunNoteHandler.cpp Tue May 25 13:38:30 2010 +0300 @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include "DunNoteHandler.h" #include "DunDebug.h" diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/generichid/group/bld.inf --- a/localconnectivityservice/generichid/group/bld.inf Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/generichid/group/bld.inf Tue May 25 13:38:30 2010 +0300 @@ -21,15 +21,6 @@ DEFAULT PRJ_EXPORTS -../inc/hidgeneric.h |../../../inc/hidgeneric.h -../inc/hidinterfaces.h |../../../inc/hidinterfaces.h -../inc/hidtranslate.h |../../../inc/hidtranslate.h -../inc/hidreportroot.h |../../../inc/hidreportroot.h -../inc/hidfield.h |../../../inc/hidfield.h -../inc/hidcollection.h |../../../inc/hidcollection.h -../inc/hidvalues.h |../../../inc/hidvalues.h -../inc/hiddriverpluginuid.h |../../../inc/hiddriverpluginuid.h - ../rom/generichid.iby CORE_MW_LAYER_IBY_EXPORT_PATH(generichid.iby) PRJ_MMPFILES diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/generichid/inc/hidcollection.h --- a/localconnectivityservice/generichid/inc/hidcollection.h Tue May 11 17:01:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,272 +0,0 @@ -/* -* Copyright (c) 2005-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: Declares main application class. -* -*/ - - -#ifndef C_COLLECTION_H -#define C_COLLECTION_H - -#include - -class CField; - - -/** - * Collection of HID report descriptor - * A CCollection represents an individual collection within a HID - * report descriptor. Each collection may have a number of associated - * report fields (CField objects) and a number of child collection - * objects. The collections within a HID report descriptor form a tree - * structure, with a CReportRoot collection at the root. The tree is - * generated by CParser. - * - * - * @lib generichid.lib - * @since S60 v5.0 - */ -class CCollection : public CBase - { - -public: - - /** - * An enumerations giving the possible types of collection, as - * given in "USB Device Class Definition for Human Interface - * Devices (HID)", Firmware Specification, Version 1.11, USB - * Implementers' Forum, June 2001. - * - * Note that a TUint32 is used for CCollection::iType, as it is - * possible to have a vendor defined collection type that isn't - * included in this list. - */ - enum TType - { - EPhysical = 0x00, //!< Physical (group of axes) - EApplication = 0x01, //!< Application (mouse,keyboard) - ELogical = 0x02, //!< Logical (interrelated data) - EReport = 0x03, //!< Report - ENamedArray = 0x04, //!< NamedArray - EUsageSwitch = 0x05, //!< UsageSwitch - EUsageModifier = 0x06 //!< UsageModifier - }; - - static CCollection* NewL(); - static CCollection* NewLC(); - - /** - * Destructor. - */ - virtual ~CCollection(); - - /** - * Get collection type - * - * @since S60 v5.0 - * @return The type for this collection item - */ - IMPORT_C TUint32 Type() const; - - /** - * Get usagepage - * - * @since S60 v5.0 - * @return The usage page for this collection - */ - IMPORT_C TInt UsagePage() const; - - /** - * Get usagepage - * - * @since S60 v5.0 - * @return The usage page for this collection - */ - IMPORT_C TInt Usage() const; - - /** - * Get number of collections - * - * @since S60 v5.0 - * @return The number of collections that have been created so far - */ - IMPORT_C TInt CollectionCount() const; - - /** - * Gets numbers of field stored in collection - * - * @since S60 v5.0 - * @return The number of fields stored in for the current collection - */ - IMPORT_C TInt FieldCount() const; - - /** - * Returns a pointer to a specific collection from the list of collections - * - * @since S60 v5.0 - * @param aIndex The index of the required collection - * @return The number of fields stored in for the current collection. - * NULL if there are no collection object at the secified index - */ - IMPORT_C const CCollection* CollectionByIndex(TInt aIndex) const; - - /** - * Returns a pointer to the field object at the given index within the field - * list - * - * @since S60 v5.0 - * @param aIndex The offset within the current field list - * @return A pointer to the specified field object - * NULL if there is no field object at the specified index - */ - IMPORT_C const CField* FieldByIndex(TInt aIndex) const; - - /** - * Check if collection type is physical - * - * @since S60 v5.0 - * @return true if physical - */ - IMPORT_C TBool IsPhysical() const; - - /** - * Check if collection type is application - * - * @since S60 v5.0 - * @return true if application - */ - IMPORT_C TBool IsApplication() const; - - /** - * Check if collection type is logical - * - * @since S60 v5.0 - * @return true if logical - */ - IMPORT_C TBool IsLogical() const; - - /** - * Check if collection type is report - * - * @since S60 v5.0 - * @return true if report - */ - IMPORT_C TBool IsReport() const; - - /** - * Check if collection type is name array - * - * @since S60 v5.0 - * @return true if named array - */ - IMPORT_C TBool IsNamedArray() const; - - /** - * Check if collection type is usage switch - * - * @since S60 v5.0 - * @return true if is usage switch - */ - IMPORT_C TBool IsUsageSwitch() const; - - /** - * Check if collection type is usage modifier - * - * @since S60 v5.0 - * @return true if usage modifier - */ - IMPORT_C TBool IsUsageModifier() const; - -public: - - /** - * Set Collection type - * - * @since S60 v5.0 - * @return None - */ - void SetType(TUint32 aType); - - /** - * Set usage page - * - * @since S60 v5.0 - * @return None - */ - void SetUsagePage(TInt aUsagePage); - - /** - * Set usage - * - * @since S60 v5.0 - * @return None - */ - void SetUsage(TInt aUsage); - - /** - * Called when a new collection object has been encountered in - * the report descriptor. This creates a new CCollection object - * and adds it to the current list - * - * @since S60 v5.0 - * @return None - */ - CCollection* AddCollectionL(); - - /** - * Called when a new field object has been encountered in the - * report descriptor. This creates a new field object and adds it - * the the current list - * - * @since S60 v5.0 - * @return A pointer to the new field object - */ - CField* AddFieldL(); - -protected: - - CCollection(); - void ConstructL(); - -private: - - /** - * Collection type - */ - TUint32 iType; - - /** - * Usage page - */ - TInt iUsagePage; - - /** - * Usage - */ - TInt iUsage; - - /** - * List of collections for the report descriptor - */ - RPointerArray iCollections; - - /** - * List of fields in the current collection - */ - RPointerArray iFields; - - }; - -#endif // C_COLLECTION_H - diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/generichid/inc/hiddriverpluginuid.h --- a/localconnectivityservice/generichid/inc/hiddriverpluginuid.h Tue May 11 17:01:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -/* -* Copyright (c) 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: UID definitions. -* -*/ - - -#ifndef HIDDRIVERPLUGINUID_H -#define HIDDRIVERPLUGINUID_H - -#define DRIVER_PLUGIN_IF_UID 0x10201d26 - -#endif // __HIDUIDS_H__ diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/generichid/inc/hidfield.h --- a/localconnectivityservice/generichid/inc/hidfield.h Tue May 11 17:01:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,732 +0,0 @@ -/* -* 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 field descriptor definition -* -*/ - -#ifndef C_FIELD_H -#define C_FIELD_H - - -#include - - -const TInt KFieldAttributeConstant = 1<<0; //!< Data (0) or Constant (1) -const TInt KFieldAttributeVariable = 1<<1; //!< Array (0) or Variable (1) -const TInt KFieldAttributeRelative = 1<<2; //!< Absolute (0) or Relative (1) -const TInt KFieldAttributeWrap = 1<<3; //!< No wrap (0) or Wrap (1) -const TInt KFieldAttributeNonLinear = 1<<4; //!< Linear (0) or Non-linear (1) -const TInt KFieldAttributeNoPreferred = 1<<5; //!< Preferred state (0) or not (1) -const TInt KFieldAttributeNullState = 1<<6; //!< No null position (0) or null state (1) -const TInt KFieldAttributeVolatile = 1<<7; //!< Non-volatile (0) or volatile (1) -const TInt KFieldAttributeBufferedBytes = 1<<8; //!< Bit field (0) or buffered bytes (1) - -const TInt KSizeOfByte = 8; -/** - * HID report field presentation - * Represents an individual field in a HID report, ie. the attributes - * of an input, output or feature Main item defined in the HID report - * descriptor. - * - * The CField contains information such as the usage IDs sent in the - * the report, the type of the report (input, output or feature) and - * the logical range. - * - * - * @lib generichid.lib - * @since S60 v5.0 - */ -class CField : public CBase - { -public: - enum TType - { - EInput, //!< Input report - EOutput, //!< Output report - EFeature //!< Feature report - }; - - - -public: - static CField* NewL(); - static CField* NewLC(); - - /** - * Destructor. - */ - virtual ~CField(); - -public: - // Accessors: - - /** - * Set Report root - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C TInt UsagePage() const; - - /** - * Return report id - * - * @since S60 v5.0 - * @return report id - */ - IMPORT_C TInt ReportId() const; - - /** - * Return offset - * - * @since S60 v5.0 - * @return offset - */ - IMPORT_C TInt Offset() const; - - /** - * Return size - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C TInt Size() const; - - /** - * Return count - * - * @since S60 v5.0 - * @return count - */ - IMPORT_C TInt Count() const; - - /** - * Return logical minimium - * - * @since S60 v5.0 - * @return Logical minimium - */ - IMPORT_C TInt LogicalMin() const; - - /** - * Return logical maximum - * - * @since S60 v5.0 - * @return logical maximum - */ - IMPORT_C TInt LogicalMax() const; - - /** - * Return usage min - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C TInt UsageMin() const; - - /** - * Return usage max - * - * @since S60 v5.0 - * @return usage max - */ - IMPORT_C TInt UsageMax() const; - - /** - * Return Physical minimum - * - * @since S60 v5.0 - * @return physical minimum - */ - IMPORT_C TInt PhysicalMin() const; - - /** - * Return Physical max - * - * @since S60 v5.0 - * @return return physical max - */ - IMPORT_C TInt PhysicalMax() const; - - /** - * Return unit - * - * @since S60 v5.0 - * @return Unit - */ - IMPORT_C TInt Unit() const; - - /** - * Return unit exponent - * - * @since S60 v5.0 - * @return unit exponent - */ - IMPORT_C TInt UnitExponent() const; - - /** - * Return Designator index - * - * @since S60 v5.0 - * @return Designator Index - */ - IMPORT_C TInt DesignatorIndex() const; - - /** - * Return designator minimium - * - * @since S60 v5.0 - * @return return designator index minimium - */ - IMPORT_C TInt DesignatorMin() const; - - /** - * Return designator maximium - * - * @since S60 v5.0 - * @return designator maximium - */ - IMPORT_C TInt DesignatorMax() const; - - /** - * Return string minimum - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C TInt StringMin() const; - - /** - * Return string maximum - * - * @since S60 v5.0 - * @return string maximum - */ - IMPORT_C TInt StringMax() const; - - /** - * Return string index - * - * @since S60 v5.0 - * @return string index - */ - IMPORT_C TInt StringIndex() const; - - /** - * Return attributes - * - * @since S60 v5.0 - * @return attributes - */ - IMPORT_C TUint32 Attributes() const; - - /** - * Return type - * - * @since S60 v5.0 - * @return type - */ - IMPORT_C TType Type() const; - - /** - * Return variable status - * - * @since S60 v5.0 - * @return variable status - */ - IMPORT_C TBool IsVariable() const; - - /** - * Return array status - * - * @since S60 v5.0 - * @return arrau status - */ - IMPORT_C TBool IsArray() const; - - /** - * Return data status - * - * @since S60 v5.0 - * @return data status - */ - IMPORT_C TBool IsData() const; - - /** - * Return constant status - * - * @since S60 v5.0 - * @return constant status - */ - IMPORT_C TBool IsConstant() const; - - /** - * Return input status - * - * @since S60 v5.0 - * @return input status - */ - IMPORT_C TBool IsInput() const; - - /** - * Return output status - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C TBool IsOutput() const; - - /** - * Return feature status - * - * @since S60 v5.0 - * @return feature status - */ - IMPORT_C TBool IsFeature() const; - - /** - * Check if reportid is in report - * - * @since S60 v5.0 - * @param aReportId report id - * @return true if reportid is in report - */ - IMPORT_C TBool IsInReport(TInt aReportId) const; - - /** - * Check if usage exsist - * - * @since S60 v5.0 - * @param aUsage Usage id - * @return None - */ - IMPORT_C TBool HasUsage(TInt aUsage) const; - - /** - * Return usage array - * - * @since S60 v5.0 - * @return usage array - */ - IMPORT_C TArray UsageArray() const; - - /** - * Return usage - * - * @since S60 v5.0 - * @param aIndex usage array index - * @return usage - */ - IMPORT_C TInt Usage(TInt aIndex) const; - - /** - * Return usage count - * - * @since S60 v5.0 - * @return usage count - */ - IMPORT_C TInt UsageCount() const; - - /** - * Return last usage - * - * @since S60 v5.0 - * @return last usage - */ - IMPORT_C TInt LastUsage() const; - - /** - * Set type - * - * @since S60 v5.0 - * @param aType type of field - * @return None - */ - IMPORT_C void SetType(const TType& aType); - - /** - * Add usage - * - * @since S60 v5.0 - * @param aUsage usage to be added - * @return None - */ - IMPORT_C void AddUsageL(TInt aUsage); - - /** - * Clear usage list - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C void ClearUsageList(); - - /** - * Set usage page - * - * @since S60 v5.0 - * @param aUsagePage usagepage to be set - * @return None - */ - IMPORT_C void SetUsagePage(TInt aUsagePage); - - /** - * Set offset - * - * @since S60 v5.0 - * @param aOffset offset to be set - * @return None - */ - IMPORT_C void SetOffset(TInt aOffset); - - /** - * Set size - * - * @since S60 v5.0 - * @param aSize size to be set - * @return None - */ - IMPORT_C void SetSize(TInt aSize); - - /** - * Set count - * - * @since S60 v5.0 - * @param aCount Count to be set - * @return None - */ - IMPORT_C void SetCount(TInt aCount); - - /** - * Set logical minimium - * - * @since S60 v5.0 - * @param aMin Logical minimium to be set - * @return None - */ - IMPORT_C void SetLogicalMin(TInt aMin); - - /** - * Set logical maximum - * - * @since S60 v5.0 - * @param aMax logical maximum to be used - * @return None - */ - IMPORT_C void SetLogicalMax(TInt aMax); - - /** - * Set usage min - * - * @since S60 v5.0 - * @param aMin usage minimium to be set. - * @return None - */ - IMPORT_C void SetUsageMin(TInt aMin); - - /** - * Set usage maximum - * - * @since S60 v5.0 - * @param aMax usage max to be set - * @return None - */ - IMPORT_C void SetUsageMax(TInt aMax); - - /** - * Set Report ID - * - * @since S60 v5.0 - * @param aReportId report id to be set - * @return None - */ - IMPORT_C void SetReportId(TInt aReportId); - - /** - * Set attributes - * - * @since S60 v5.0 - * @param aAttributes attributes to be set - * @return None - */ - IMPORT_C void SetAttributes(TUint32 aAttributes); - - /** - * Set physical minimium - * - * @since S60 v5.0 - * @param aValue physical minimium value - * @return None - */ - IMPORT_C void SetPhysicalMin(TInt aValue); - - /** - * Set Physical maximum - * - * @since S60 v5.0 - * @param aValue physical maximum value - * @return None - */ - IMPORT_C void SetPhysicalMax(TInt aValue); - - /** - * Set unit value - * - * @since S60 v5.0 - * @param aValue unit value - * @return None - */ - IMPORT_C void SetUnit(TInt aValue); - - /** - * Set unit exponent - * - * @since S60 v5.0 - * @param aValue unit exponent valut to be set - * @return None - */ - IMPORT_C void SetUnitExponent(TInt aValue); - - /** - * Set Designator index - * - * @since S60 v5.0 - * @param aValue Designator index value - * @return None - */ - IMPORT_C void SetDesignatorIndex(TInt aValue); - - /** - * Set designator minimium - * - * @since S60 v5.0 - * @param aValue designator minimum value - * @return None - */ - IMPORT_C void SetDesignatorMin(TInt aValue); - - /** - * Set designator maximium value - * - * @since S60 v5.0 - * @param aValue designator maximium value - * @return None - */ - IMPORT_C void SetDesignatorMax(TInt aValue); - - /** - * Set string minimium value - * - * @since S60 v5.0 - * @param aValue string minimium value - * @return None - */ - IMPORT_C void SetStringMin(TInt aValue); - - /** - * Set string maximum value - * - * @since S60 v5.0 - * @param aValue string maximum value to be set - * @return None - */ - IMPORT_C void SetStringMax(TInt aValue); - - /** - * Set string index - * - * @since S60 v5.0 - * @param aValue string index - * @return None - */ - IMPORT_C void SetStringIndex(TInt aValue); - - /** - * Set Logical range - * - * @since S60 v5.0 - * @param aMin logical range minimium value - * @param aMax logical range maximum value - * @return None - */ - IMPORT_C void SetLogicalRange(TInt aMin, TInt aMax); - - /** - * Set Usage range - * - * @since S60 v5.0 - * @param aMin usage range minimium value - * @param aMax usage range maximum value - * @return None - */ - IMPORT_C void SetUsageRange(TInt aMin, TInt aMax); - - /** - * Set Physical range - * - * @since S60 v5.0 - * @param aMin physical range minimium value - * @param aMax physical range maximum value - * @return None - */ - IMPORT_C void SetPhysicalRange(TInt aMin, TInt aMax); - - /** - * Set string range - * - * @since S60 v5.0 - * @param aMin string range minimium value - * @param aMax string range maximum value - * @return None - */ - IMPORT_C void SetStringRange(TInt aMin, TInt aMax); - - /** - * Set designator range - * - * @since S60 v5.0 - * @param aMin designator range minimium value - * @param aMax designator range maximum value - * @return None - */ - IMPORT_C void SetDesignatorRange(TInt aMin, TInt aMax); - -private: - CField(); - - - -private: - - /** - * Input, output or feature report - */ - TType iType; - - // For a detailed description of the use of the following members, - // see "USB Device Class Definition for Human Interface Devices - // (HID)", Firmware Specification, Version 1.11, USB Implementers' - // Forum, June 2001. - - /** - * The usage page this field is associated with (G) - */ - TInt iUsagePage; - - /** - * ID for the HID report containing this field (G) - */ - TInt iReportId; - - /** - * Field offset (in bits) from start of report - */ - TInt iPos; - - /** - * Bit size of each item in the current field (G) - */ - TInt iSize; - - /** - * Number of items in the report field (G) - */ - TInt iCount; - - /** - * Minimum extent value in logical units (G) - */ - TInt iLogicalMin; - - /** - * Maximum extent value in logical units (G) - */ - TInt iLogicalMax; - - /** - * Starting usage associated with array / bitmap (L) - */ - TInt iUsageMin; - - /** - * Ending usage associated with array / bitmap (L)L) - */ - TInt iUsageMax; - - /** - * Unit value (G) - */ - TInt iUnit; - - /** - * Value of the unit exponent in base 10 (G) - */ - TInt iUnitExponent; - - /** - * Body part used for a control (L) - */ - TInt iDesignatorIndex; - - /** - * String associated with a control (L) - */ - TInt iStringIndex; - - /** - * Minimum physical extent for a variable item (G) - */ - TInt iPhysicalMin; - - /** - * Maximum physical extent for a variable item (G) - */ - TInt iPhysicalMax; - - /** - * First string index for a group of strings (L) - */ - TInt iStringMin; - - /** - * Last string index for a group of strings (L) - */ - TInt iStringMax; - - /** - * Starting designator index (L) - */ - TInt iDesignatorMin; - - /** - * Ending designator index (L) - */ - TInt iDesignatorMax; - - /** - * Flags associated with a main item (e.g. "array") - */ - TUint32 iAttributes; - - /** - * The usage indexes associated with this field (G) - */ - RArray iUsageList; - - // (G) = Global item - // (L) = Local item - }; - -#endif - diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/generichid/inc/hidgeneric.h --- a/localconnectivityservice/generichid/inc/hidgeneric.h Tue May 11 17:01:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,339 +0,0 @@ -/* -* 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: Declares main application class. -* -*/ - - -#ifndef C_GENERICHID_H -#define C_GENERICHID_H - -#include - -class CDriverListItem; -class TElement; -class CParser; -class CReportRoot; -class CConnectionInfo; - -/** - * - * Generic HID main class - * Generic HID layer, allowing the HID Transport layers and device drivers to - * pass data to the Generic HID - * - * @lib generichid.lib - * @since S60 v5.0 - */ -class CGenericHid : public CHidTransport, public MDriverAccess - { -public: - virtual ~CGenericHid(); - - /** - * Constructs a generic HID layer with a reference to the owner so commands can - * be sent to connected devices - * - * @since S60 v5.0 - * @param aTransportLayer The owning transport layer - * @return a Pointer to an instantiated Generic HID layer - */ - IMPORT_C static CGenericHid* NewL(MTransportLayer* aTransportLayer); - - /** - * Constructs a generic HID layer with a reference to the owner so commands can - * be sent to connected devices - * - * @since S60 v5.0 - * @param aTransportLayer The owning transport layer - * @return a Pointer to an instantiated Generic HID layer - */ - IMPORT_C static CGenericHid* NewLC(MTransportLayer* aTransportLayer); - - /** - * Fromm class MDriverAccess - * Retrieves the country code for the HID device - * - * @since S60 v5.0 - * @param aConnectionID The device identifier - * @return a country code - */ - TUint CountryCodeL(TInt aConnectionID); - - /** - * Fromm class MDriverAccess - * Retrieves the country code for the HID device - * - * @since S60 v5.0 - * @param aConnectionId The device identifier - * @return a vendor ir - */ - TUint VendorIdL(TInt aConnectionId); - - /** - * Fromm class MDriverAccess - * Retrieves the product identifier for the HID device - * - * @since S60 v5.0 - * @param aConnectionId The device identifier - * @return a prodcut id - */ - TUint ProductIdL(TInt aConnectionId); - - - /** - * Fromm class MDriverAccess - * Sets the protocol to be used for reports. - * Leaves KErrInUse The request was not successful because the - * transport layer is busy with a previous request, - * KErrNotReady The request failed because the device - * is currently unavailable and KErrNotFound The request - * was unsuccessful - * - * @since S60 v5.0 - * @param aConnectionId The device identifier - * @param aInterface The device interface being used by the driver - * @param aProtocol The requested report protocol (boot or report) - * @parem aDriver Calling driver - * @return None. - */ - void SetProtocolL(TInt aConnectionId, TUint16 aInterface, - MDriverAccess::TProtocols aProtocol, CHidDriver* aDriver); - - - /** - * Fromm class MDriverAccess - * Requests the current protocol from the HID device. This is an asynchronous - * request. The protocol value will come through at a later time - * - * @since S60 v5.0 - * @param aConnectionId The device identifier - * @param aInterface The hid interface - * @return None. - */ - void GetProtocolL(TInt aConnectionId, TUint16 aInterface); - - /** - * Fromm class MDriverAccess - * A request for a report from the device. This is an asynchronous request. - * The report will come through at a later time - * - * @since S60 v5.0 - * @param aConnectionId The device identifier - * @param aReportId report id to be get - * @param aInterface The device interface being used by the driver - * @param aLength report lenght - * @return None. - */ - void GetReportL(TInt aConnectionId, TUint8 aReportId, - TUint16 aInterface, TUint16 aLength); - - /** - * Fromm class MDriverAccess - * A request to send a report payload to the HID device - * Leaves whit KErrInUse The request was not successful because the transport - * layer is busy with previous request and KErrNotReady The request failed - * because the device is currently unavailable - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @param aReportId The report id - * @param aReportType Type of report (input/output/feature) - * @param aPayload The report containing the device setup packet - * @param aInterface The device interface being used by the driver - * @parem aDriver Calling driver - * @return None. - */ - void SetReportL(TInt aConnectionId, - TUint8 aReportId, MDriverAccess::TReportType aReportType, - const TDesC8& aPayload, TUint16 aInterface, CHidDriver* aDriver); - - /** - * Fromm class MDriverAccess - * A request to send a report payload to the HID device in Interrupt Channel - * Leaves whit KErrInUse The request was not successful because the transport - * layer is busy with previous request and KErrNotReady The request failed - * because the device is currently unavailable - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @param aReportId report id which payload to be send - * @param aPayload The report containing the device setup packet - * @param aInterface The device interface being used by the driver - * @return None. - */ - void DataOutL(TInt aConnectionId, TUint8 aReportId, - const TDesC8& aPayload, TUint16 aInterface); - - /** - * Fromm class MDriverAccess - * Request for the current idle setting for the device - * This is an asynchronous request. The idle value will come through at a - * later time. Leaves whit KErrInUse The request was not successful because the transport - * layer is busy with previous request and KErrNotReady The request failed - * because the device is currently unavailable - * - * @since S60 v5.0 - * @param aConnectionId The device identifier - * @param aReportId The report ID for which we want the idle rate - * @param aInterface The device interface being used by the driver - * @return None. - */ - void GetIdleL(TInt aConnectionId, TUint8 aReportId, TUint16 aInterface); - - /** - * Fromm class MDriverAccess - * Request to the HID device to set the specified idle rate - * A request to send a report payload to the HID device - * Leaves whit KErrInUse The request was not successful because the transport - * layer is busy with previous request and KErrNotReady The request failed - * because the device is currently unavailable - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @param aDuration The number of 0.04ms intervals to wait between reports - * @param aReportId The report for which the idle rate is being set - * @param aInterface The device interface being used by the driver - * @parem aDriver Calling driver - * @return None. - */ - void SetIdleL(TInt aConnectionId, TUint8 aDuration, - TUint8 aReportId, TUint16 aInterface, CHidDriver* aDriver); - - /** - * From class CHidTransport - * Called by the transport layers to inform the generic HID of the success of - * the last Set... command. - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @param aCmdAck Status of the last Set... command - * @return None. - */ - void CommandResult(TInt aConnectionId, TInt aCmdAck); - - /** - * From class MDriverAccess - * Gives the device driver access to the results of the report - * descriptor parsing - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @return A pointer to the parsed descriptor object. - */ - CReportRoot* ReportDescriptor(TInt aConnectionId); - - /** - * From class CHidTransport - * Called by a transport layer when a device has connected and the report - * descriptors have been obtained - * - * @since S60 v5.0 - * @param aConnectionId The tansport-layer enumeration for the connection - * @param aDescriptor The report descriptor for the connected HID device - * @return KErrNone if a driver was found, otherwise an error code - */ - TInt ConnectedL(TInt aConnectionId, const TDesC8& aDescriptor); - - /** - * From class CHidTransport - * Called by a transport layer when a device has been disconnected - * - * @since S60 v5.0 - * @param aConnectionId The tansport-layer enumeration for the connection - * @return KErrNone if a driver was found, otherwise an error code - */ - TInt Disconnected(TInt aConnectionId); - - /** - * From class CHidTransport - * Called by the transport layer when a device has sent a report on the - * interrupt or control channel - * - * @since S60 v5.0 - * @param aConnectionId The tansport-layer enumeration for the connection - * @param aChannel Channel ID (Interrupt or Control) - * @param aPayload The complete report payload - * @return KErrNone if the data was handled by the driver, otherwise an error code - */ - virtual TInt DataIn(TInt aConnectionId, - CHidTransport::THidChannelType aChannel, const TDesC8& aPayload); - - /** - * From class CHidTransport - * Called by the transport layer to suspend or resume a driver - * - * @since S60 v5.0 - * @param aConnectionId The tansport-layer enumeration for the connection - * @param aActive EActive to start the driver(s), ESuspend to suspend - * @return KErrNone if the driver was successfully activated, otherwise an error code - */ - TInt DriverActive(TInt aConnectionId, - CHidTransport::TDriverState aActive); - -protected: - CGenericHid(MTransportLayer* aTransportLayer); - void ConstructL(); - -private: - - /** - * Remove drivers - * - * @since S60 v5.0 - * @return None - */ - void RemoveDrivers(); - - /** - * Attempts to find a driver that is handling reports from the HID device - * - * @since S60 v5.0 - * @return Connection information - */ - CConnectionInfo* SeekConnectionInfo(TInt aConnectionId); - -private: - - /** - * Instantiated driver list - */ - TSglQue iDriverList; - - /** - * Parser - * Own. - */ - CParser* iParser; - - /** - * Parser - * Not own. - */ - MTransportLayer* iTransportLayer; - - /** - * Connection information - */ - RPointerArray iConnectionInfo; - - /** - * Input data handling registry - * Own. - */ - CHidInputDataHandlingReg* iInputHandlingReg; - - }; - -#endif diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/generichid/inc/hidinterfaces.h --- a/localconnectivityservice/generichid/inc/hidinterfaces.h Tue May 11 17:01:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,704 +0,0 @@ -/* -* 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: Declares main application class. -* -*/ - - - -#ifndef C_HIDDRIVER_H -#define C_HIDDRIVER_H - -#include - - -class CReportRoot; -class MDriverAccess; -class MTransportLayer; -class CHidDriver; -// ---------------------------------------------------------------------- - -// Return codes from the Generic HID to Transport layers -// -const TInt KErrHidBase = -8000; - -const TInt KErrHidNoDriver = KErrHidBase; /*!< No driver could be found to handle the request */ -const TInt KErrHidSuspended = KErrHidBase - 1; /*!< Command not handled - driver is suspended */ -const TInt KErrHidUnrecognised = KErrHidBase - 2; /*!< Driver could not understand the data */ -const TInt KErrHidUnexpected = KErrHidBase - 3; /*!< Unsolicited data from the device */ -const TInt KErrHidBadChannel = KErrHidBase - 4; /*!< Channel was not Int or Ctrl type */ -const TInt KErrHidPartialSupported = KErrHidBase - 5; /*!< Partil supported hid device */ - -// Errors returned by the report translator / generator: -// -const TInt KErrUsageNotFound = KErrHidBase - 10; //!< Usage page/ID wasn't found in the field -const TInt KErrValueOutOfRange = KErrHidBase - 11; //!< Value specified is outside the logical range -const TInt KErrNoSpaceInArray = KErrHidBase - 12; //!< Array field already contains the maximum number of values -const TInt KErrBadControlIndex = KErrHidBase - 13; //!< Control index exceeds the number of controls in the field - -// ACK codes returned by Set/Get requests to the devices -// -const TInt KErrCommandAckBase = -8100; - -const TInt KErrAckInvalidReportID = KErrCommandAckBase; /*!< Invalid report ID */ -const TInt KErrAckInvalidParameter = KErrCommandAckBase - 1; /*!< Invalid or out of range param */ -const TInt KErrAckUnknown = KErrCommandAckBase - 2; /*!< Command failed, but the device can't determine why */ -const TInt KErrAckFatal = KErrCommandAckBase - 3; /*!< The device is in an unrecoverable state and must be restarted */ - -// Constant for plugin interface: -const TUid KHidDriverPluginInterfaceUid = { 0x10201d26 }; - - -class THidEvent - { - public: - /** - * Usage page - */ - TInt iUsagePage; - - /** - * Keycode - */ - TInt iKeyCode; - }; - -class CHidInputDataHandlingReg: public CBase - { - -public: - /** - * Two-phased constructor. - */ - static CHidInputDataHandlingReg* NewL(); - - /** - * Destructor - */ - virtual ~CHidInputDataHandlingReg(); - -public: - - /** - * Check if key event is not allready processed - * - * @since S60 v5.0 - * @param aUsagePage a usage page to be checked - * @param aUsage a usage code to be checked - * @return true if event is not allready handled - */ - IMPORT_C TBool AllowedToHandleEvent(TInt aUsagePage, TInt aUsage); - - - /** - * Add handled event - * - * @since S60 v5.0 - * @param aUsagePage usage page to be handled - * @param aUsage Usage to be handled - * @return None. - */ - IMPORT_C void AddHandledEvent( TInt aUsagePage, TInt aUsage); - - /** - * Reset Array - */ - void Reset(); - -private: - - CHidInputDataHandlingReg(); - void ConstructL(); - -private: - - /** - * Event array - * Own. - */ - CArrayFixFlat* iEventArray; - - }; - -/** - * - * Transport layer interface class - * Interface allowing the generic HID layer to pass data to a Transport layer - * All commands are asynchronous. The results are returned via the - * - * @since S60 v5.0 - */ -class MTransportLayer - { -public: - - /** - * Request for the country code of the given device. - * - * @since S60 v5.0 - * @param aConnID The device identifier - * @return country code. - */ - virtual TUint CountryCodeL(TInt aConnID) = 0; - - /** - * Request for the vendor identifier for the given device. - * - * @since S60 v5.0 - * @param aConnID The device identifier - * @return vendor id. - */ - virtual TUint VendorIdL(TInt aConnID) = 0; - - /** - * Request for the product identifier for the given device. - * - * @since S60 v5.0 - * @param aConnID The device identifier - * @return product id. - */ - virtual TUint ProductIdL(TInt aConnID) = 0; - - /** - * Request for the current device report protocol. The protocol will be - * received as a control report via the CHidTransport::DataIn function - * - * @since S60 v5.0 - * @param aConnID The device identifier - * @param aInterface The interface we want to get the protocol from - * @return None. - */ - virtual void GetProtocolL(TInt aConnID, TUint16 aInterface) = 0; - - /** - * Request to put the device in the specified protocol - * - * @since S60 v5.0 - * @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. - */ - virtual void SetProtocolL(TInt aConnID, TUint16 aValue, - TUint16 aInterface) = 0; - - /** - * Request for a device report. The data will be received as a control report - * via the CHidTransport::DataIn function - * - * @since S60 v5.0 - * @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. - */ - virtual void GetReportL(TInt aConnID, TUint8 aReportType,TUint8 aReportID, - TUint16 aInterface, TUint16 aLength) = 0; - - /** - * Request to send a report to a device. The response will be reported via the - * CHidTransport::CommandResult function - * - * @since S60 v5.0 - * @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. - */ - virtual void SetReportL(TInt aConnID, TUint8 aReportType,TUint8 aReportID, - TUint16 aInterface, const TDesC8& aReport) = 0; - - /** - * Request to send data to a device. There are no responses to this report from device. - * - * @since S60 v5.0 - * @param aConnID The device identifier - * @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. - */ - virtual void DataOutL(TInt aConnID, TUint8 aReportID, - TUint16 aInterface, const TDesC8& aReport) = 0; - - /** - * Request for the current idle rate of a report from the device. The response - * will be recevied via the CHidTransport::DataIn function - * - * @since S60 v5.0 - * @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. - */ - virtual void GetIdleL(TInt aConnID, TUint8 aReportID, - TUint16 aInterface) = 0; - - /** - * 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 v5.0 - * @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. - */ - virtual void SetIdleL(TInt aConnID, TUint8 aDuration, TUint8 aReportID, - TUint16 aInterface) = 0; - }; - -/** - * - * Driver access interface - * Interface allowing drivers to request data from and send data to devices via - * the Generic HID layer. - * - * @since S60 v5.0 - */ -class MDriverAccess - { -public: - - /** - * The type of report requested from the device - * Note: The enumeration values map directly to the HID equivalent values - * (Passed as TUint16 values to the transport layer) - */ - enum TReportType - { - EInput=1, /*!< Input report */ - EOutput, /*!< Output report */ - EFeature /*!< Feature report */ - }; - - /** Return codes from the Generic HID to the device drivers - * Note: The enumeration values map directly to the HID equivalent values - *(Passed as TUint8 values to the transport layer) - */ - - enum TProtocols - { - EBoot=0, /*!< Boot Protocol */ - EReport=1 /*!< Report Protocol */ - }; - -public: - - /** - * Retrieves the country code for the HID device - * - * @since S60 v5.0 - * @param aConnID The device identifier - * @return contry code - */ - virtual TUint CountryCodeL(TInt aConnID) = 0; - - /** - * Retrieves the for the HID device - * - * @since S60 v5.0 - * @param aConnID The device identifier - * @return vendor id - */ - virtual TUint VendorIdL(TInt aConnID) = 0; - - /** - * Retrieves the product identifier for the HID device - * - * @since S60 v5.0 - * @param aConnID The device identifier - * @return produrct id - */ - virtual TUint ProductIdL(TInt aConnID) = 0; - - /** - * Requests the current protocol for the device (boot or report) - * Leaves whit KErrInUse The request was not successful because the transport - * layer is busy with previous request and KErrNotReady The request failed - * because the device is currently unavaila - * - * @since S60 v5.0 - * @param aConnectionID The connection id - * @param aInterface The current interface being used by the driver - * @return None. - */ - virtual void GetProtocolL(TInt aConnectionID, - TUint16 aInterface) = 0; - - /** - * Requests a report from the device - * Leaves whit KErrInUse The request was not successful because the transport - * layer is busy with previous request and KErrNotReady The request failed - * because the device is currently unavailable - * - * @since S60 v5.0 - * @param aConnectionId The connection id - * @param aReportId The report required from the device - * @param aInterface The current interface being used by the driver - * @param aLength ** NOT USED ** - * @return None - */ - virtual void GetReportL(TInt aConnectionId, TUint8 aReportId, - TUint16 aInterface, TUint16 aLength) = 0; - - /** - * Requests the current Idle setting for the device - * Leaves whit KErrInUse The request was not successful because the transport - * layer is busy with previous request and KErrNotReady The request failed - * because the device is currently unavailable - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @param aReportId The report required from the device - * @param aInterface The current interface being used by the driver - * @return None. - */ - virtual void GetIdleL(TInt aConnectionId, TUint8 aReportId, - TUint16 aInterface ) = 0; - - /** - * Sets the protocol to be used for reports - * Leaves whit KErrInUse The request was not successful because the transport - * layer is busy with previous request and KErrNotReady The request failed - * because the device is currently unavailable - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @param aInterface The current interface being used by the driver - * @param aProtocol The required protocol (boot or report) - * @parem aDriver Calling driver - * @return None. - */ - virtual void SetProtocolL(TInt aConnectionId, - TUint16 aInterface, TProtocols aProtocol, CHidDriver* aDriver) = 0; - - /** - * Sets the idle interval for interrupt data. - * Leaves whit KErrInUse The request was not successful because the transport - * layer is busy with previous request and KErrNotReady The request failed - * because the device is currently unavailable - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @param aDuration The idle interval, in steps of 0.04ms intervals (where - * 1 = 0.04ms, 2=0.08ms). 0 will disable idle so reports - * are only sent when the state of the device changes - * @param aInterface The current interface being used by the driver - * @param aReportId The report whose idle rate is being set - * @param aInterface The current interface being used by the driver - * @parem aDriver Calling driver - * @return None. - */ - virtual void SetIdleL(TInt aConnectionId, TUint8 aDuration, - TUint8 aReportId, TUint16 aInterface, CHidDriver* aDriver) = 0; - - - /** - * Sends a report to the device - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @param aReportId The report to receive the setup report - * @param aReportType The type of report being sent to the device (input, output - * or Feature) - * @param aPayload The report being sent to the device - * @parem aDriver Calling driver - * @param aInterface The current interface being used by the driver - * @return KErrNone The request was successful and the result of the command is - * expected at a later time (as a CmdAck message), KErrInUse The request - * was not successful because the transport layer is busy with a previous - * request, KErrNotReady The request failed because the device is currently - * unavailable and KErrNoMemory The request failed because not enough memory - * available - */ - virtual void SetReportL(TInt aConnectionId, TUint8 aReportId, - TReportType aReportType, const TDesC8& aPayload, - TUint16 aInterface, CHidDriver* aDriver) = 0; - - /** - * Sends a report to the device (from host) using Interrupt Channel as DATA - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @param aReportId The report to receive the setup report - * @param aPayload The report being sent to the device - * @param aInterface The current interface being used by the driver - * @return KErrNone The request was successful and the result of the - * command is expected at a later time (as a CmdAck message), - * KErrInUse The request was not successful because the transport layer is - * busy with a previous request, KErrNotReady The request failed because the - * device is currently unavailable and KErrNoMemory The request failed because - * not enough memory available - */ - virtual void DataOutL(TInt aConnectionId, TUint8 aReportId, - /*TReportType aReportType,*/ const TDesC8& aPayload, - TUint16 aInterface) = 0; - - /** - * A request for the parsed descriptor container object so the driver can - * retrieve the report format(s) - * - * @since S60 v5.0 - * @param aConnectionId The device ID - * @return A pointer to the parsed report descriptor container and - * NULL if no parsed report descriptor container exists - */ - virtual CReportRoot* ReportDescriptor(TInt aConnectionId) = 0; - }; - - -/** - * - * Hid transport interface - * Interface allowing the transport layer to pass data to the Generic HID - * - * @since S60 v5.0 - */ -class CHidTransport : public CBase - { -public: - /** - * Defines the channel type for the DataIn function - */ - enum THidChannelType - { - EHidChannelInt, /*!< Interrupt channel */ - EHidChannelCtrl /*!< Control channel */ - }; - - /** - *Driver state (active or suspended) - */ - enum TDriverState - { - EActive, /*!< Driver will handle interrupt data */ - ESuspend /*!< the driver will not handle interrupt data */ - }; - -public: - - /** - * Called when a device has connected - * - * @since S60 v5.0 - * @param aConnectionId The transport-layer enumeration for the connection - * @param aDescriptor The report descriptor for the device - * @return KErrNone The connection will be handled by one or more drivers, - * KErrHidNoDriver No driver was found to handle the connected device - */ - virtual TInt ConnectedL(TInt aConnectionId, const TDesC8& aDescriptor) = 0; - - /** - * Called when a device has been disconnected - * - * @since S60 v5.0 - * @param aConnectionId The transport-layer enumeration for the connection - * @param aDescriptor The report descriptor for the device - * @return KErrNone The device was recognised and its drivers were unloaded and - * KErrHidNoDriver No driver was found to handle the connected device - */ - virtual TInt Disconnected(TInt aConnectionId) = 0; - - /** - * Called when a device has been disconnected - * - * @since S60 v5.0 - * @param aConnectionId Transport layer connection enumeration - * @param aChannel Channel ID (Interrupt or Control) - * @param aPayload The complete report payload - * @return KErrNone The payload was handled by one or more drivers, - * KErrHidNoDriver No driver is handling reports from the device - * and KErrHidSuspended The report was not handled because all the drivers - * handling the device are suspended - */ - virtual TInt DataIn(TInt aConnectionId, - THidChannelType aChannel, const TDesC8& aPayload) = 0; - - /** - * Suspends or Resumes the driver(s) handling the connection - * - * @since S60 v5.0 - * @param aConnectionId Transport layer connection enumeration - * @param aActive The requested state of the driver (active or suspended) - * @return KErrNone The driver was successfully put into the requested state, - * and KErrHidAlreadyInState All the drivers were already in the - * requested state - */ - virtual TInt DriverActive(TInt aConnectionId, - CHidTransport::TDriverState aActive) = 0; - - /** - * Called by the transport layers to inform the generic HID of the - * success of the last Set... command. - * - * @since S60 v5.0 - * @param aConnectionId Transport layer connection enumeration - * @param aCmdAck Status of the last Set... command - * @return None. - */ - virtual void CommandResult(TInt aConnectionId, TInt aCmdAck) = 0; - }; - -/** - * - * Driver plugin interface - * Interface allowing drivers to request data from and send data to devices via - * the Generic HID layer. - * - * @lib generichid.lib - * @since S60 v5.0 - */ -class CHidDriver : public CBase - { -public: - - - /** - * Two-phased constructor. - * @param aImplementationUid Implementation UID of the plugin to be - * created. - * @param aHid Driver acces interface - */ - IMPORT_C static CHidDriver* NewL( - const TUid aImplementationUid, - MDriverAccess* aHid ); - - /** - * Destructor - */ - IMPORT_C virtual ~CHidDriver(); - - /** - * Called by the Generic HID to see if the factory can use reports described by - * the parsed report descriptor - * NOTE: The current implementation supports just one driver and that driver - * that will either handle all the reports from the device or none at all. - * Report ID is not currently being taken into account. - * - * @since S60 v5.0 - * @param aReportDescriptor Parsed HID report descriptor - * @return KErrNone The driver will handle reports from the report descriptor and - * KErrHidUnrecognised The driver cannot handle reports from the device - */ - virtual TInt CanHandleReportL(CReportRoot* aReportDescriptor) = 0; - - /** - * Called by the Generic HID layer when a device has sent a report on the - * interrupt or control channel - * - * @since S60 v5.0 - * @param aChannel Channel ID (Interrupt or Control) - * @param aPayload The complete report payload - * @return Error if data can't be handled. - */ - virtual TInt DataIn(CHidTransport::THidChannelType aChannel, - const TDesC8& aPayload) = 0; - - /** - * Called by the Generic HID layer when the handled device has been disconnected - * interrupt or control channel - * - * @since S60 v5.0 - * @param aReason Disconnection code - * @return None. - */ - virtual void Disconnected(TInt aReason) = 0; - - /** - * Called after a driver is sucessfully created by the Generic HID, - * when a device is connected. - * - * @since S60 v5.0 - * @param aConnectionId An number used to identify the device in - * subsequent calls from the driver to the generic HID, for example - * when sending data to the device. - * @return None. - */ - virtual void InitialiseL(TInt aConnectionId) = 0; - - /** - * Enables the driver so that it will configure the device and - * start handling interrupt reports from the device - * - * @since S60 v5.0 - * @param aConnectionId A number used to identify the device in - * subsequent calls from the driver to the Generic HID, for example - * when sending data to the device. - * @return None. - */ - virtual void StartL(TInt aConnectionId) = 0; - - /** - * Disables the driver so that it will stop handling device - * interrupt reports - * - * @since S60 v5.0 - * @return None. - */ - virtual void Stop() = 0; - - /** - * Called by the transport layers to inform the generic HID of - * the success of the last Set... command. - * - * @since S60 v5.0 - * @param aCmdAck Status of the last Set... command - * @return None. - */ - virtual void CommandResult(TInt aCmdAck) = 0; - - /** - * Return count of supported fields - * - * @since S60 v5.0 - * @return Number of supported fields. - */ - virtual TInt SupportedFieldCount()= 0; - - - /** - * Set input handling registy - * - * @since S60 v5.0 - * @param aHandlingReg a Input handling registry - * @return Number of supported fields. - */ - virtual void SetInputHandlingReg(CHidInputDataHandlingReg* aHandlingReg) = 0; - - protected: - /** - * C++ constructor. - */ - IMPORT_C CHidDriver(); - - private: // Data - - /** - * ECOM plugin instance UID. - */ - TUid iDtor_ID_Key; - }; - -#endif - - diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/generichid/inc/hidreportroot.h --- a/localconnectivityservice/generichid/inc/hidreportroot.h Tue May 11 17:01:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,274 +0,0 @@ -/* -* 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: Declares hid report class -* -*/ - - -#ifndef C_HIDREPORTROOT_H -#define C_HIDREPORTROOT_H - -#include - -#include "hidfield.h" -#include "hidcollection.h" - -#include "hidvalues.h" - -class CReportRoot; - - - -/** - * Hid field finder class - * The MHidFieldFinder class defines the call-back interface used by - * THidFieldSearch. A device driver uses THidFieldSearch::SearchL() - * along with a custom MHidFieldFinder object to determine whether it - * is compatible with a given report descriptor. - * - * @lib generichid.lib - * @since S60 v5.0 - */ -class MHidFieldFinder - { -public: - - /** - * Called by THidFieldSearch::SearchL() during traversal of the - * report descriptor tree when a CCollection is encountered. It - * will be called once, and only once, for every CCollection in the - * descriptor. It is not called for the root collection - * (the CReportRoot). - * - * @since S60 v5.0 - * @param aCollection A pointer to the collection object. - * @return ETrue if the contents of this collection (any child CField - * or CCollection objects) should be examined. A driver would return - * EFalse if a collection was not of a compatible type, for - * example if the usage page was inappropriate. - */ - virtual TBool BeginCollection(const CCollection *aCollection) = 0; - - /** - * Called by THidFieldSearch::SearchL() during traversal of the - * report descriptor tree when all CFields and child CCollections - * of a CCollection have been examined. It will be called once, - * and only once, for every CCollection in the descriptor. It is - * not called for the root collection (the CReportRoot). - * - * @since S60 v5.0 - * @param aCollection A pointer to the collection object. - * @return ETrue if the search (tree traversal) should - * continue. A driver returns EFalse if it has finished examining - * the whole descriptor, in general this will be if it has - * established that it is compatible with the report descriptor. - */ - virtual TBool EndCollection(const CCollection *aCollection) = 0; - - /** - * Called once for each CField in a CCollection by - * THidFieldSearch::SearchL() during the traversal of a report - * descriptor tree. - * - * @since S60 v5.0 - * @param aField The pointer to field - * @return None. - */ - virtual void Field(const CField* aField) = 0; - }; - - -/** - * Report Size - * - * @lib generichid.lib - * @since S60 v5.0 - */ -class TReportSize - { -public: - - /** - * Constructor. - * - * @since S60 v5.0 - * @param aReportId The report id - * @param aType Field type - * @return Pointer to report size object - */ - TReportSize(TInt aReportId, CField::TType aType); - - - /** - * TReportSize comparision - * - * @since S60 v5.0 - * @param aFirst first report size to be compared. - * @param aSecond second report size to be compared - * @return None - */ - static TBool Match(const TReportSize& aFirst, - const TReportSize& aSecond); - - /** - * Report id - */ - TInt iReportId; - - /** - * Fiel type - */ - CField::TType iType; - - /** - * Report size - */ - TInt iSize; - }; - - -/** - * Hid field search - * THidFieldSearch provides a mechanism for traversing a parsed report - * descriptor tree (a CReportRoot object). It is intended for a device - * driver to use when it is looking to see if it is compatible with a - * newly connected device, i.e. provides the appropriate types of - * report. The driver must provide an object of a class that implements - * the MHidFieldFinder interface. - * - * @since S60 v5.0 - */ -class THidFieldSearch - { -public: - - /** - * Traverse a parsed report descriptor (a tree of CCollections - * and CFields) calling the MHidFieldFinder member functions as - * appropriate. - * - * @since S60 v5.0 - * @param aReportRoot THe pointer to field - * @param aFinder An object that will establish if the report - * descriptor is suitable. - * @return None. - */ - IMPORT_C void SearchL(const CReportRoot* aReportRoot, - MHidFieldFinder* aFinder); - -private: - - /** - * Traverse a parsed report descriptor (a tree of CCollections - * and CFields) calling the MHidFieldFinder member functions as - * appropriate. - * - * @since S60 v5.0 - * @param aReportRoot THe pointer to field - * @return ETrue when search is done. - */ - TBool DoSearchL(const CCollection* aCollection); - -private: - MHidFieldFinder* iFinder; - }; - -/** - * Root report - * The top level of the tree of fields and collections in a HID - * report descriptor. - * - * @lib generichid.lib - * @since S60 v5.0 - */ -class CReportRoot : public CCollection - { -public: - static CReportRoot* NewLC(); - static CReportRoot* NewL(); - - /** - * Destructor - */ - virtual ~CReportRoot(); - - /** - * Increase the size of a given report by a given number of bits - * - * @since S60 v5.0 - * @param aReportId The report id, which size shoud be increased - * @param aType a Type of field - * @param aIncrement size of increase - * @return None - */ - void IncrementReportSizeL(TInt aReportId, - CField::TType aType, TInt aIncrement); - - /** - * Get the size of a given report in bits - * - * @since S60 v5.0 - * @param aReportId The report id, which size shoud be increased - * @param aType a Type of field - * @return Size of report in bits - */ - TInt ReportSize(TInt aReportId, CField::TType aType) const; - - /** - * Get the size of a given report in bytes - * - * @since S60 v5.0 - * @param aReportId The report id, which size shoud be increased - * @param aType a Type of field - * @return Size of report in bytys - */ - IMPORT_C TInt ReportSizeBytes(TInt aReportId, CField::TType aType) const; - - /** - * Get the number of reports - * - * @since S60 v5.0 - * @return number of reports - */ - TInt NumberOfReports() const; - - /** - * Get the size of a given report by array index, rather than type & ID - * - * @since S60 v5.0 - * @param aIndex report index - * @return report size - */ - TInt ReportSize(TInt aIndex) const; - -private: - CReportRoot(); - - /** - * Find report index - * - * @since S60 v5.0 - * @param aReportId The report id to be found - * @param aType a Type of field - * @return report size - */ - TInt FindReportSizeIndex(TInt aReportId, CField::TType aType) const; - - /** - * Array to store the size of each report - */ - RArray iSizes; - }; - -#endif diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/generichid/inc/hidtranslate.h --- a/localconnectivityservice/generichid/inc/hidtranslate.h Tue May 11 17:01:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,191 +0,0 @@ -/* -* Copyright (c) 2005-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: Report translator -* -*/ - -#ifndef T_TRANSLATE_H -#define T_TRANSLATE_H - -#include - -class CField; - -/** - * HID report base object - * - * Base class for report translator and report generator. - * Contains only static functions. - * - * @lib generichid.lib - * @since S60 v5.0 - */ -class TReportUtils - { -public: - /** - * Find the index within the usages for a field of a given usage ID. - * - * @since S60 v5.0 - * @param aField Pointer to the field. - * @param aUsageId Usage ID to find. - * @param aUsageIndex Reference to variable to receive the index. - * @return True if the usage ID is found. - */ - static TBool GetIndexOfUsage(const CField* aField, - TInt aUsageId, TInt& aUsageIndex); - /** - * Find the usage ID at a given index within the usages for a field. - * - * @since S60 v5.0 - * @param aField Pointer to the field. - * @param aUsageIndex The index. - * @return The usage ID at the given index. - */ - static TInt UsageAtIndex(const CField* aField, TInt aUsageIndex); - - /** - * Write a value to a field at a given index. - * - * @since S60 v5.0 - * @param aData Buffer containing the HID report. - * @param aField The field in which to write. - * @param aIndex Position in the field to write. - * @param aValue Value to write to the field. - * @return Error code indicating success or reason for failure. - */ - static TInt WriteData(HBufC8& aData, const CField* aField, - TInt aIndex, TInt aValue); - - /** - * Read a value from a field at a given index. - * - * @since S60 v5.0 - * @param aData Buffer containing the HID report. - * @param aField The field from which to read. - * @param aIndex Position in the field to read. - * @param aValue Reference to variable to receive the value read - * from the field. - * @return Error code indicating success or reason for failure. - */ - static TInt ReadData(const TDesC8& aData, const CField* aField, - TInt aIndex, TInt& aValue); - }; - -/** - * HID report translator - * - * Allows a device driver to extract data items from a device report, based on - * the results of the report descriptor parser stage (at device connection) - * - * @lib generichid.lib - * @since S60 v5.0 - */ -class TReportTranslator - { -public: - - /** - * Constructor. - * - * @since S60 v5.0 - * @param aData Data to be extracted - * @param aField HID field - * @return return TReportTranslator - */ - IMPORT_C TReportTranslator(const TDesC8& aData, const CField* aField); - - /** - * For variable fields, reads the logical value of the control with the - * given usage ID. For arrays, searches for the usage ID and gives the - * value as ETrue if found and EFalse if not. - * - * @since S60 v5.0 - * @param aValue Reference to variable to receive the value read - * from the field. - * @param aUsageId Usage ID of the control to read. - * @param aControlOffset Which control to read when more than one - * have the same usage ID. - * @return Error code indicating success or reason for failure. - */ - IMPORT_C TInt GetValue(TInt& aValue, TInt aUsageId, - TInt aControlOffset = 0) const; - - /** - * Alternate version of the above method for convenience. Returns the - * value read directly and leaves if an error occurs. - * - * @since S60 v5.0 - * @param aUsageId Usage ID of the control to read. - * @param aControlOffset Which control to read when more than one - * have the same usage ID. - * @return The logical value of a variable, or true/false for an array. - */ - IMPORT_C TInt ValueL(TInt aUsageId, TInt aControlOffset = 0) const; - - /** - * Gets the usage ID at a given index in an array field. For variable - * fields, if the logical value of the control at the given index is non- - * zero, returns the usage ID of the control, otherwise returns zero. - * - * @since S60 v5.0 - * @param aUsageId Reference to variable to receive the usage ID. - * @param aIndex Index in the array to read. - * @return Error code indicating success or reason for failure. - */ - IMPORT_C TInt GetUsageId(TInt& aUsageId, TInt aIndex) const; - - /** - * Alternate version of the above method for convenience. Returns the - * usage ID directly and leaves if an error occurs. - * - * @since S60 v5.0 - * @param aIndex Index in the array to read. - * @return The usage ID. - */ - IMPORT_C TInt UsageIdL(TInt aIndex) const; - - /** - * Gets the logical value at a given index in a field. Leaves if an - * error occurs. - * - * @since S60 v5.0 - * @param aIndex Index in the field to read. - * @return The logical value. - */ - IMPORT_C TInt RawValueL(TInt aIndex) const; - - /** - * Gets the number of controls in the field. - * - * @since S60 v5.0 - * @return The number of controls. - */ - IMPORT_C TInt Count() const; - -private: - - /** - * Data to be extracted - */ - const TDesC8& iData; - - /** - * HID field - * Not own. - */ - const CField* iField; - }; - -#endif diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/generichid/inc/hidvalues.h --- a/localconnectivityservice/generichid/inc/hidvalues.h Tue May 11 17:01:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -/* -* 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 related enums -* -*/ - - -#ifndef HIDVALUES_H -#define HIDVALUES_H - -#include - -/** - * Constants as defined in "USB HID Usage Tables", Version 1.11, USB - * Implementers' Forum, June 2001. Used throughout for parsing report - * descriptors and interpreting reports. - */ - -/** - * HID usage page ID values, as given in the document "USB HID Usage - * Tables", Version 1.11, USB Implementers' Forum, June 2001 - */ -enum THidUsagePages - { - EUsagePageUndefined = 0x00, - EUsagePageGenericDesktop = 0x01, - EUsagePageSimulationControls = 0x02, - EUsagePageVRControls = 0x03, - EUsagePageSportControls = 0x04, - EUsagePageGameControls = 0x05, - EUsagePageGenericDeviceControls = 0x06, - EUsagePageKeyboard = 0x07, - EUsagePageLEDs = 0x08, - EUsagePageButton = 0x09, - EUsagePageOrdinal = 0x0A, - EUsagePageTelephony = 0x0B, - EUsagePageConsumer = 0x0C, - EUsagePageDigitizer = 0x0D, - EUsagePagePIDPage = 0x0F, - EUsagePageUnicode = 0x10, - EUsagePageAlphanumericDisplay = 0x14, - EUsagePageMedicalInstruments = 0x40, - EUsagePageMonitorMin = 0x80, - EUsagePageMonitorMax = 0x83, - EUsagePagePowerMin = 0x84, - EUsagePagePowerMax = 0x87, - EUsagePageBarCodeScanner = 0x8C, - EUsagePageScale = 0x8D, - EUsagePageMagStripe = 0x8E, - EUsagePagePOS = 0x8F, - EUsagePageCameraControl = 0x90, - EUsagePageArcade = 0x91, - EUsagePageVendorSpecific = 0xFF01 - }; - -/** - * HID usage ID values for the Generic Desktop usage page, as given in - * the document "USB HID Usage Tables", Version 1.11, USB Implementers' - * Forum, June 2001 - */ -enum THidGenericDesktopUsages - { - EGenericDesktopUsagePointer = 0x01, - EGenericDesktopUsageMouse = 0x02, - EGenericDesktopUsageJoystick = 0x04, - EGenericDesktopUsagePad = 0x05, - EGenericDesktopUsageKeyboard = 0x06, - EGenericDesktopUsageKeypad = 0x07, - EGenericDesktopUsageMultiAxisCtrl = 0x08, - EGenericDesktopUsageX = 0x30, - EGenericDesktopUsageY = 0x31, - EGenericDesktopUsageZ = 0x32, - EGenericDesktopUsageRx = 0x33, - EGenericDesktopUsageRy = 0x34, - EGenericDesktopUsageRz = 0x35, - EGenericDesktopUsageSlider = 0x36, - EGenericDesktopUsageDial = 0x37, - EGenericDesktopUsageWheel = 0x38, - EGenericDesktopUsageHatSwitch = 0x39, - EGenericDesktopUsageCountedBuffer = 0x3A, - EGenericDesktopUsageByteCount = 0x3B, - EGenericDesktopUsageMotionWakeup = 0x3C, - EGenericDesktopUsageStart = 0x3D, - EGenericDesktopUsageSelect = 0x3E - }; - -enum THidTelephonyUsages - { - ETelephonyUsageHookSwitch = 0x20, - ETelephonyUsagePhoneMute = 0x2F, - ETelephonyUsagePoC = 0x33 - }; - -enum THidConsumerUsages - { - EConsumerUsagePlay = 0xB0, - EConsumerUsageFastForward = 0xB3, - EConsumerUsageRewind = 0xB4, - EConsumerUsageScanNext = 0xB5, - EConsumerUsageScanPrev = 0xB6, - EConsumerUsageStop = 0xB7, - EConsumerUsageRandomPlay = 0xB9, - EConsumerUsagePlayPause = 0xCD, - EConsumerUsageVolumeInc = 0xE9, - EConsumerUsageVolumeDec = 0xEA, - EConsumerUsageMute = 0xE2 - }; - -enum THidVendorSpecificUsages - { - EVendorSpecificUsagePoC = 0x01, - EVendorSpecificUsageHeadplugDetection = 0x02 - }; -// ---------------------------------------------------------------------- - -#endif diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/headset/hidremconbearer/group/bld.inf --- a/localconnectivityservice/headset/hidremconbearer/group/bld.inf Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/headset/hidremconbearer/group/bld.inf Tue May 25 13:38:30 2010 +0300 @@ -18,10 +18,6 @@ PRJ_PLATFORMS DEFAULT -PRJ_EXPORTS -../inc/hidremconbearerinternalpskeys.h |../../../../inc/hidremconbearerinternalpskeys.h -../inc/hidremconbearerscancodes.h |../../../../inc/hidremconbearerscancodes.h - PRJ_MMPFILES hidremconbearer.mmp diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/obexreceiveservices/mtmuiinfrared/src/irmtmui.cpp --- a/localconnectivityservice/obexreceiveservices/mtmuiinfrared/src/irmtmui.cpp Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/obexreceiveservices/mtmuiinfrared/src/irmtmui.cpp Tue May 25 13:38:30 2010 +0300 @@ -34,7 +34,7 @@ #include // Notifier UID's #include //For notifier #include -#include +#include const TInt KIrMtmUiConnectionTimeout = 20000000; const TInt KIrMtmUiReceiveTimeout = 0; diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/obexreceiveservices/opp/src/oppcontroller.cpp --- a/localconnectivityservice/obexreceiveservices/opp/src/oppcontroller.cpp Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/obexreceiveservices/opp/src/oppcontroller.cpp Tue May 25 13:38:30 2010 +0300 @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/obexserviceman/utils/src/obexutilsdialog.cpp --- a/localconnectivityservice/obexserviceman/utils/src/obexutilsdialog.cpp Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/obexserviceman/utils/src/obexutilsdialog.cpp Tue May 25 13:38:30 2010 +0300 @@ -20,7 +20,7 @@ #include "obexutilsdialog.h" #include "obexutilsdialogtimer.h" #include "obexutilsuilayer.h" -#include +#include #include #include #include diff -r 2702348f1fe7 -r 2553637c2525 localconnectivityservice/obexserviceman/utils/src/obexutilsuilayer.cpp --- a/localconnectivityservice/obexserviceman/utils/src/obexutilsuilayer.cpp Tue May 11 17:01:49 2010 +0300 +++ b/localconnectivityservice/obexserviceman/utils/src/obexutilsuilayer.cpp Tue May 25 13:38:30 2010 +0300 @@ -21,7 +21,7 @@ #include "obexutilslaunchwaiter.h" #include "obexutilsdebug.h" -#include +#include #include #include #include diff -r 2702348f1fe7 -r 2553637c2525 shortlinkconn_plat/generic_hid_api/group/bld.inf --- a/shortlinkconn_plat/generic_hid_api/group/bld.inf Tue May 11 17:01:49 2010 +0300 +++ b/shortlinkconn_plat/generic_hid_api/group/bld.inf Tue May 25 13:38:30 2010 +0300 @@ -31,3 +31,4 @@ ../inc/hidreportroot.h MW_LAYER_PLATFORM_EXPORT_PATH(hidreportroot.h) ../inc/hidtranslate.h MW_LAYER_PLATFORM_EXPORT_PATH(hidtranslate.h) ../inc/hidvalues.h MW_LAYER_PLATFORM_EXPORT_PATH(hidvalues.h) +../inc/hiddriverpluginuid.h MW_LAYER_PLATFORM_EXPORT_PATH(hiddriverpluginuid.h) \ No newline at end of file diff -r 2702348f1fe7 -r 2553637c2525 shortlinkconn_plat/generic_hid_api/inc/hiddriverpluginuid.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/shortlinkconn_plat/generic_hid_api/inc/hiddriverpluginuid.h Tue May 25 13:38:30 2010 +0300 @@ -0,0 +1,24 @@ +/* +* Copyright (c) 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: UID definitions. +* +*/ + + +#ifndef HIDDRIVERPLUGINUID_H +#define HIDDRIVERPLUGINUID_H + +#define DRIVER_PLUGIN_IF_UID 0x10201d26 + +#endif // __HIDUIDS_H__