mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/src/EnhanMediaTestClassBlocks.cpp
branchRCL_3
changeset 46 0ac9a5310753
parent 45 095bea5f582e
--- a/mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/src/EnhanMediaTestClassBlocks.cpp	Tue Aug 31 15:43:02 2010 +0300
+++ b/mmmw_plat/enhanced_media_client_api/tsrc/EnhanMediaTestClass/src/EnhanMediaTestClassBlocks.cpp	Wed Sep 01 12:23:00 2010 +0100
@@ -206,6 +206,23 @@
 
         ENTRY( "DSGetSize", CEnhanMediaTestClass::DSGetSize ),
 
+        ENTRY( "DSGetSize", CEnhanMediaTestClass::GeneralGen_StartProgDLL ),
+
+        ENTRY( "Gen_StartProgDL",CEnhanMediaTestClass::GeneralGen_StartProgDLL ),
+        ENTRY( "PDLSOpenL",CEnhanMediaTestClass::PDLSOpenL ),
+        ENTRY( "PDLSGetCurFileSizeL",CEnhanMediaTestClass::PDLSGetCurFileSizeL ),
+        ENTRY( "PDLSGetExpFileSizeL",CEnhanMediaTestClass::PDLSGetExpFileSizeL ),
+        ENTRY( "PDLSGetDLStatusL",CEnhanMediaTestClass::PDLSGetDLStatusL ),
+        ENTRY( "PDLSIsDLCompleteL",CEnhanMediaTestClass::PDLSIsDLCompleteL ),
+        ENTRY( "PDLSGetPerDownloadedL",CEnhanMediaTestClass::PDLSGetPerDownloadedL ),
+        ENTRY( "PDLSGetPerBufferedL",CEnhanMediaTestClass::PDLSGetPerBufferedL ),
+        ENTRY( "PDLSGetDLRateL",CEnhanMediaTestClass::PDLSGetDLRateL ),
+        ENTRY( "PDLSGetBitRateL",CEnhanMediaTestClass::PDLSGetBitRateL ),
+        ENTRY( "PDLSResumeDownloadL",CEnhanMediaTestClass::PDLSResumeDownloadL ),
+        ENTRY( "PDLSMoveFileL",CEnhanMediaTestClass::PDLSMoveFileL ),
+        ENTRY( "PDLSCancelDownloadL",CEnhanMediaTestClass::PDLSCancelDownloadL ),
+        ENTRY( "PDLSGetSize",CEnhanMediaTestClass::PDLSGetSize ),
+
         ENTRY( "AudioEffect_IsEnabled",CEnhanMediaTestClass::AudioEffectIsEnabled ),
         ENTRY( "AudioEffect_IsEnforced",CEnhanMediaTestClass::AudioEffectIsEnforced ),
         ENTRY( "AudioEffect_Uid",CEnhanMediaTestClass::AudioEffectUid ),
@@ -311,6 +328,7 @@
 		(TText*)L"EEStreamOpen",
 		(TText*)L"EEStreamPrime",
 		(TText*)L"EEStreamStart",
+		(TText*)L"EEPDLSOpen",
 
 	};
 	if( (TUint)aKey >= (sizeof( keywords )/sizeof(TText*)) )
@@ -607,7 +625,15 @@
         delete iDRMConfigIntfc;
         iDRMConfigIntfc = NULL;
         }
-
+    if(iUrlName)
+        {
+        delete iUrlName;
+        }
+
+    if(iAccessPtName)
+        {
+        delete iAccessPtName;
+        }
    // ProcessEvent(EECreateFactory, error);
 /*	for (TUint i =0; i < iExpectedEvents.Count() ; i++)
 		{
@@ -654,6 +680,15 @@
                 }
             break;
             }
+        case EPDLSOURCE:
+            {
+            status = iFactory->CreateSourceControl( KProgDLSourceControl, iSourceControl );
+            if(status == KErrNone)
+                {
+                iMProgDLSource = static_cast<MProgDLSource*>(iSourceControl);
+                }
+            break;
+            }
         default:
         	{
         	status = KErrNotSupported;
@@ -697,6 +732,12 @@
         iFactory->DeleteSourceControl(objPtr);
         iMFileSource = NULL;
         }
+    if(iMProgDLSource)
+        {
+        MSourceControl* objPtr = iMProgDLSource;
+        iFactory->DeleteSourceControl(objPtr);
+        iMProgDLSource = NULL;
+        }
     iLog->Log(_L("DeleteSourceControl OK"));
     //ProcessEvent(EECreateSource, status);
 	return status;
@@ -1522,6 +1563,18 @@
                 }
 	        break;
 	        }
+        case EPDLSOURCE:
+	        {
+	        if(iMProgDLSource)
+	            {
+                iMProgDLSource->AddObserver(*this);
+	            }
+            else
+                {
+                status = KErrNotFound;
+                }
+	        break;
+	        }
         case EVOLUMECONTROL:
 	        {
 	        if(iMVolumeControl)
@@ -2001,6 +2054,11 @@
             iSourceControl = iMDescriptorSource;
             }
             break;
+        case EPDLSOURCE:
+            {
+            iSourceControl = iMProgDLSource;
+            }
+            break;
         }
 
 	status = iMStreamControl->RemoveSource(*iSourceControl);
@@ -2041,6 +2099,11 @@
             iSourceControl = iMDescriptorSource;
             }
             break;
+        case EPDLSOURCE:
+            {
+            iSourceControl = iMProgDLSource;
+            }
+            break;
         }
 	status = iMStreamControl->AddSource(*iSourceControl);
     if (status == KErrNone)
@@ -2132,6 +2195,10 @@
 	else
 		{
 	        iLog->Log(_L("iMStreamControl->GetState() = %d"), state);
+	        if (iMProgDLSource)
+	        	{
+	        	status = iMProgDLSource->Close();
+	        	}
 			status = iMStreamControl->Close();
 	        iLog->Log(_L("iMStreamControl->GetState() = %d"), iMStreamControl->GetState());
 
@@ -2215,6 +2282,18 @@
                 }
 	        break;
 	        }
+        case EPDLSOURCE:
+	        {
+	        if(iMProgDLSource)
+	            {
+                iMProgDLSource->RemoveObserver(*this);
+	            }
+            else
+                {
+                status = KErrNotFound;
+                }
+	        break;
+	        }
         case EVOLUMECONTROL:
 	        {
 	        if(iMVolumeControl)
@@ -3549,6 +3628,18 @@
                 }
 	        break;
 	        }
+        case EPDLSOURCE:
+	        {
+	        if(iMProgDLSource)
+	            {
+                controlUid = iMProgDLSource->Type();
+	            }
+            else
+                {
+                status = KErrNotFound;
+                }
+	        break;
+	        }
 	    }
     iLog->Log(_L("CEnhanMediaTestClass::ControlTypeL  = [%d]"),control);
 	return status;
@@ -3646,6 +3737,18 @@
                 }
 	        break;
 	        }
+        case EPDLSOURCE:
+	        {
+	        if(iMProgDLSource)
+	            {
+				controlType = iMProgDLSource->ControlType();
+	            }
+            else
+              {
+              status = KErrNotFound;
+              }
+	        break;
+	        }
 	    }
     iLog->Log(_L("CEnhanMediaTestClass::ControlControlTypeL = [%d]"),control);
     return status;
@@ -3884,6 +3987,378 @@
     return status;
     }
 
+TInt CEnhanMediaTestClass::GeneralGen_StartProgDLL(CStifItemParser& aItem)
+    {
+    TInt status = KErrNone;
+    TPtrC string;
+	//AddExpectedEvent(EEStartDownload,KMediumTimeout);
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+
+    status = aItem.GetNextString ( string );
+
+    if ( status != KErrNone )
+        {
+        iLog->Log(_L("CHelixSTIFClient:: File name missing in config file "));
+        return status;
+        }
+    else
+        {
+        if(iUrlName)
+            {
+            delete iUrlName;
+            iUrlName = NULL;
+            }
+        iUrlName = HBufC8::NewL(string.Length());
+        TPtr8 des = iUrlName->Des();
+        des.Copy(string);
+        }
+
+    status = aItem.GetNextString ( string );
+
+    if ( status != KErrNone )
+        {
+        iLog->Log(_L("CHelixSTIFClient:: File name missing in config file "));
+        return status;
+        }
+    else
+        {
+        if(iAccessPtName)
+            {
+            delete iAccessPtName;
+            iAccessPtName = NULL;
+            }
+        iAccessPtName = HBufC::NewL(string.Length());
+        TPtr des = iAccessPtName->Des();
+        des.Copy(string);
+        }
+
+    status = aItem.GetNextString ( string );
+
+    if ( status != KErrNone )
+        {
+        iLog->Log(_L("CHelixSTIFClient:: File name missing in config file "));
+        return status;
+        }
+    else
+        {
+        if(iFileName)
+            {
+            delete iFileName;
+            iFileName = NULL;
+            }
+        iFileName = HBufC::NewL(string.Length());
+        TPtr des = iFileName->Des();
+        des.Copy(string);
+        }
+
+    if ( !iDMgrConnected )
+        {
+        TRAP(status,iDownloadMgr.ConnectL( TUid::Uid(1), *this, EFalse ));
+        if(!status)
+            {
+            iDMgrConnected = ETrue;
+            }
+        else
+            {
+            iLog->Log(_L("CHelixSTIFClient::GeneralGen_StartProgDLL Connection failed to DlMgr "));
+            return status;
+            }
+        }
+
+    // Get IAP names and ids from the database
+    TInt res;
+    TBuf<40> name;
+    TUint32 id;
+
+    CCommsDatabase* TheDb = CCommsDatabase::NewL(EDatabaseTypeIAP);
+    CleanupStack::PushL(TheDb);
+
+    TheDb->ShowHiddenRecords();
+
+    CCommsDbTableView* view = TheDb->OpenTableLC(TPtrC(IAP));
+    res = view->GotoFirstRecord();
+
+    while(res == KErrNone)
+        {
+        view->ReadTextL(TPtrC(COMMDB_NAME), name);
+        view->ReadUintL(TPtrC(COMMDB_ID), id);
+
+				iLog->Log(_L("CHelixSTIFClient::GeneralGen_StartProgDLL Name[%s] ID[%d] "),&name,id);
+        if(!iAccessPtName->Des().Compare(name))
+            {
+            break;
+            }
+
+        res = view->GotoNextRecord();
+        RDebug::Print(_L("IAP name, id: %S, %d"), &name, id);
+        }
+
+    CleanupStack::PopAndDestroy(); // view
+    CleanupStack::PopAndDestroy(); // TheDb
+
+    status = iDownloadMgr.SetIntAttribute( EDlMgrIap,id );
+    if(status != KErrNone)
+        {
+        return status;
+        }
+
+    status = iDownloadMgr.SetDefaultStringAttribute( EDlAttrDestFilename, *iFileName ) ;
+
+
+    TRAP(status,iDownload = &(iDownloadMgr.CreateDownloadL(*iUrlName)));
+    if(status != KErrNone)
+        {
+        return status;
+        }
+
+    status = iDownload->Start();
+    if(status != KErrNone)
+        {
+        iLog->Log(_L("CHelixSTIFClient::GeneralGen_StartProgDLL Download Start Failed "));
+        return status;
+        }
+    status = iDownload->GetIntAttribute(EDlAttrId, iDownloadId);
+    if(status != KErrNone)
+        {
+        iLog->Log(_L("CHelixSTIFClient::GeneralGen_StartProgDLL Getting DLId failed "));
+        return status;
+        }
+
+    if(iActive)
+        {
+        delete iActive;
+        iActive = NULL;
+        }
+
+    iActive = new CActiveSchedulerWait;
+    RDebug::Print(_L("Before"));
+    iLog->Log(_L("Before = %d"), status);
+    iActive->Start();
+    iLog->Log(_L("After = %d"), status);
+    RDebug::Print(_L("AFter"));
+    iLog->Log(_L("CEnhanMediaTestClass::GeneralGen_StartProgDLL = %d"), status);
+    return status;
+    }
+
+
+TInt CEnhanMediaTestClass::PDLSOpenL(CStifItemParser& /*aItem*/)
+	{
+	AddExpectedEvent(EEPDLSOpen,KMediumTimeout);
+	TInt status(KErrNone);
+	//TBool stateDL;
+	//TUint percent;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+    status = iMProgDLSource->Open(*iFileName,iDownloadId);
+//	iMProgDLSource->GetPercentageDownloaded(percent);
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSGetCurFileSizeL(CStifItemParser& /*aItem*/)
+	{
+	TInt status(KErrNone);
+	TUint fileSize;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+    status = iMProgDLSource->GetCurrentFileSize(fileSize);
+    iLog->Log(_L("PDLSGetCurFileSizeL = %d"), fileSize);
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSGetExpFileSizeL(CStifItemParser& /*aItem*/)
+	{
+	TInt status(KErrNone);
+	TUint fileSize;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+    status = iMProgDLSource->GetExpectedFileSize(fileSize);
+    iLog->Log(_L("PDLSGetExpFileSizeL = %d"), fileSize);
+
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSGetDLStatusL(CStifItemParser& /*aItem*/)
+	{
+	TInt status(KErrNone);
+	MProgDLSource::TDownloadStatus dlStatus;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+
+    dlStatus = iMProgDLSource->GetDownloadStatus();
+    iLog->Log(_L("PDLSGetDLStatusL = %d"), dlStatus);
+
+	return status;
+	}
+
+
+TInt CEnhanMediaTestClass::PDLSIsDLCompleteL(CStifItemParser& /*aItem*/)
+	{
+	TInt status(KErrNone);
+	TBool dlComplete;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+
+    status = iMProgDLSource->IsDownloadComplete(dlComplete);
+    iLog->Log(_L("PDLSIsDLCompleteL = %d"), dlComplete);
+
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSGetPerDownloadedL(CStifItemParser& /*aItem*/)
+	{
+	TInt status(KErrNone);
+	TUint perDl;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+
+    status = iMProgDLSource->GetPercentageDownloaded(perDl);
+    iLog->Log(_L("PDLSGetPerDownloadedL = %d"), perDl);
+
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSGetPerBufferedL(CStifItemParser& /*aItem*/)
+	{
+	TInt status(KErrNone);
+	TUint perBuf;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+
+    status = iMProgDLSource->GetPercentageBuffered(perBuf);
+    iLog->Log(_L("PDLSGetPerBufferedL = %d"), perBuf);
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSGetDLRateL(CStifItemParser& /*aItem*/)
+	{
+	TInt status(KErrNone);
+	TUint dlRate;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+
+    status = iMProgDLSource->GetDownloadingRate(dlRate);
+    iLog->Log(_L("PDLSGetDLRateL = %d"), dlRate);
+
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSGetBitRateL(CStifItemParser& /*aItem*/)
+	{
+	TInt status(KErrNone);
+	TUint bitRate;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+
+    status = iMProgDLSource->GetBitRate(bitRate);
+    iLog->Log(_L("PDLSGetBitRateL = %d"), bitRate);
+
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSResumeDownloadL(CStifItemParser& /*aItem*/)
+	{
+	TInt status(KErrNone);
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+
+    status = iMProgDLSource->ResumeDownload();
+    iLog->Log(_L("PDLSResumeDownloadL = %d"), status);
+
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSMoveFileL(CStifItemParser& aItem)
+	{
+	TInt status(KErrNone);
+    TPtrC string;
+    TFileName fileName;
+	if(!iMProgDLSource)
+	    {
+	    return status = KErrNotReady;
+	    }
+	status = 	aItem.GetNextString(string);
+	if ( status != KErrNone )
+		{
+		iLog->Log(_L("CEnhanMediaTestClass:: File name missing in config file "));
+		return status;
+		}
+	else
+		{
+		fileName.Copy(string);
+		}
+    if(iFileName)
+        {
+        delete iFileName;
+        iFileName = NULL;
+        }
+    iFileName = HBufC::NewL(fileName.Length());
+    iFileName->Des().Copy(fileName);
+
+
+    status = iMProgDLSource->MoveFile(*iFileName);
+    iLog->Log(_L("PDLSMoveFileL = %d"), status);
+
+	return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSGetSize(CStifItemParser& /*aItem*/)
+	{
+
+    iLog->Log(_L("CEnhanMediaTestClass::PDLSGetSize "));
+    TInt status(KErrNone);
+	TUint sizes = 0;
+	if(!iMProgDLSource)
+	    {
+	    status = KErrNotReady;
+	    }
+	else
+		{
+		status = iMProgDLSource->GetSize(sizes);
+		}
+    iLog->Log(_L("CEnhanMediaTestClass::PDLSGetSize [%d]"), status);
+
+    return status;
+	}
+
+TInt CEnhanMediaTestClass::PDLSCancelDownloadL(CStifItemParser& /*aItem*/)
+	{
+	TMediaId mediaId;
+	TFourCC dataType;
+    iLog->Log(_L("CEnhanMediaTestClass::PDLSCancelDownloadL "));
+    TInt status(KErrNone);
+	if(!iMProgDLSource)
+	    {
+	    status = KErrNotReady;
+	    }
+	else
+		{
+	    status = iMProgDLSource->CancelDownload();
+		}
+    iLog->Log(_L("CEnhanMediaTestClass::PDLSCancelDownloadL [%d]"), status);
+
+    return status;
+	}
+
 TInt CEnhanMediaTestClass::StreamCustomInterface(CStifItemParser& /*aItem*/)
 	{
     iLog->Log(_L("CEnhanMediaTestClass::StreamCustomInterface "));
@@ -5157,6 +5632,19 @@
                 }
 	        break;
 	        }
+        case EPDLSOURCE:
+	        {
+	        if(iMProgDLSource)
+	            {
+                controlUid = iMProgDLSource->Type();
+	            }
+            else
+                {
+                status = KErrNotFound;
+                }
+	        break;
+	        }
+
         case EVOLUMECONTROL:
 	        {
 	        if(iMVolumeControl)
@@ -5425,6 +5913,19 @@
               }
 	        break;
 	        }
+        case EPDLSOURCE:
+	        {
+	        if(iMProgDLSource)
+	            {
+				controlType = iMProgDLSource->ControlType();
+	            }
+            else
+              {
+              status = KErrNotFound;
+              }
+	        break;
+	        }
+
         case EVOLUMECONTROL:
 	        {
 	        if(iMVolumeControl)