--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videofeeds/clientapi/src/CIptvLiveTvClient.cpp Wed Sep 01 12:30:28 2010 +0100
@@ -0,0 +1,160 @@
+/*
+* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: Implements LiveTv Client API.*
+*/
+
+
+
+
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include <s32mem.h>
+#include "IptvLiveLogger.h"
+
+#include "IptvClientServerCommon.h"
+#include "CIptvLiveTvClient.h"
+#include "IptvServer.pan"
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CIptvLiveTvClient::CIptvLiveTvClient
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+CIptvLiveTvClient::CIptvLiveTvClient() :
+ iMsgPtr( (unsigned char*)0, 0 )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvLiveTvClient::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CIptvLiveTvClient::ConstructL()
+ {
+ LIVE_TV_TRACE1( _L("CIptvLiveTvClient::ConstructL"));
+ TInt error( iSession.Connect() );
+ LIVE_TV_TRACE2( _L("iSession.Connect() returned %d"), error );
+ if( error != KErrNone )
+ {
+ User::Leave( error );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvLiveTvClient::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CIptvLiveTvClient* CIptvLiveTvClient::NewL()
+ {
+ CIptvLiveTvClient* self =
+ new ( ELeave ) CIptvLiveTvClient();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvLiveTvClient::~CIptvLiveTvClient
+// Destructor
+// -----------------------------------------------------------------------------
+EXPORT_C CIptvLiveTvClient::~CIptvLiveTvClient()
+ {
+ iSession.Close();
+ if ( iMsg )
+ {
+ delete iMsg;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvLiveTvClient::UpdateEPG, asynchronous
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvLiveTvClient::UpdateEPG( TUint32 /*aServiceProviderId*/,
+ TRequestStatus& aStatus )
+ {
+ LIVE_TV_TRACE1( _L("CIptvLiveTvClient::UpdateEPG()" ) );
+ iSession.SendRequest( EIptvEngineLiveTvUpdateEPGReq, aStatus );
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvLiveTvClient::UpdateChannelOrder, synchronous
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvLiveTvClient::UpdateChannelOrderL( const TUint32 aServiceId,
+ const TInt64 aChannelId,
+ const TUint32 aOrder )
+ {
+ LIVE_TV_TRACE4(_L("CIptvLiveTvClient::UpdateChannelOrder() in, aChannelId: %Li, aServiceId: %u, aOrder:%u"), aChannelId, aServiceId, aOrder );
+ delete iMsg;
+ iMsg = NULL;
+
+ iMsg = HBufC8::NewL( KIptvChannelOrderReqSize );
+ iMsgPtr.Set( iMsg->Des() );
+ RDesWriteStream stream;
+ CleanupClosePushL( stream );
+ stream.Open( iMsgPtr );
+ stream.WriteUint32L( aServiceId );
+ stream << aChannelId; // Can leave too. Does this work with TInt64?
+ stream.WriteUint32L( aOrder );
+ CleanupStack::PopAndDestroy( &stream ); // Closes stream
+
+ return iSession.SendRequest( EIptvEngineLiveTvUpdateChannelReq, iMsgPtr );
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvLiveTvClient::AddServiceIdL, asynchronous
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvLiveTvClient::AddServiceIdL( TUint32 aServiceId,
+ TRequestStatus& aStatus )
+ {
+ delete iMsg;
+ iMsg = NULL;
+
+ iMsg = HBufC8::NewL( KIptvSizeRequestSize );
+ iMsgPtr.Set( iMsg->Des() );
+ RDesWriteStream stream;
+ CleanupClosePushL( stream );
+ stream.Open( iMsgPtr );
+ stream.WriteUint32L( aServiceId );
+ CleanupStack::PopAndDestroy( &stream ); // closes stream
+
+ iSession.SendRequest( EIptvEngineLiveTvContentServiceId, iMsgPtr, aStatus );
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvLiveTvClient::SetIapL, synchronous
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvLiveTvClient::SetIapL( TUint32 aIap )
+ {
+ TBuf8<KIptvSizeRequestSize> buf;
+
+ RDesWriteStream stream;
+ CleanupClosePushL( stream );
+ stream.Open( buf );
+ stream.WriteUint32L( aIap );
+ CleanupStack::PopAndDestroy( &stream ); // closes stream
+
+ return iSession.SendRequest( EIptvEngineLiveTvSetIap, buf );
+ }