TUint32 TCmdUNSAFTimers::CreateNewKeyL( CRepository& aRepository,
										TUint32 aKey,
										TUint32 aTable ) const
    {
    const TUint32 KInitialKey = 1;
	TUint32 newKey = KInitialKey;
    RArray<TUint32> keys;
    CleanupClosePushL( keys );
    TInt err = aRepository.FindL( aKey,
                                  KUNSAFProtocolsFieldTypeMask,
                                  keys );
    if ( err != KErrNotFound )
        {
        User::LeaveIfError( err );
        TInt keyCount = keys.Count();
        if ( keyCount != 0 )
            {
            // Find the biggest key and increment it by one
            keys.SortUnsigned();
            TUint32 maxKey = aKey ^ keys[ keyCount - 1 ];
            newKey = maxKey + 1;
            }
        }

    newKey |= aTable;
    CleanupStack::PopAndDestroy( &keys );
    return newKey;
    }
TUint32 CDataDepository::CreateNewTableKeyL( TUint aTableMask, TUint32 aFieldMask ) const
    {
    const TInt KReserved = 1;
    TUint32 newKey = 0;
    RArray< TUint32 > keys;
    CleanupClosePushL( keys );
    TInt err = iRepository->FindL( aTableMask,
                                  aFieldMask,
                                  keys );
    TInt keyCount = keys.Count( );
    
    if ( err == KErrNotFound )
        {
        newKey = aFieldMask + 1;
        }
    else
        {
        User::LeaveIfError( err );
        if ( keyCount == 0 )
            {
            newKey = aFieldMask + 1;
            }
        else
            {
            // Find the biggest key and increment it by one
            keys.SortUnsigned( );
            TUint32 maxKey = aTableMask ^ keys[ keyCount - 1 ];  
            newKey = aFieldMask + 1 + maxKey;
            }
        }
    newKey |= aFieldMask; 
    newKey ^= aFieldMask;
    
    TUint32 key = aTableMask | newKey;//test
    
    User::LeaveIfError( iRepository->Create( aTableMask | newKey, KReserved ) );
    CleanupStack::PopAndDestroy( &keys );
    return newKey;
    }