commonappservices/alarmserver/AlarmAlert/Source/ASAltClientSession.cpp
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonappservices/alarmserver/AlarmAlert/Source/ASAltClientSession.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,264 @@
+// Copyright (c) 1999-2009 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:
+//
+
+#include "ASAltClientSession.h"
+
+// User includes
+#include <asaltdefs.h>
+#include <asshdalarm.h>
+#include "ASSrvStaticUtils.h"
+
+//
+// ----> RASAltClientSession (source)
+//
+
+//*************************************************************************************
+RASAltClientSession::RASAltClientSession()
+:	iTimePointer(NULL, 0, 0),
+	iAlarmPckg(TASShdAlarm())
+    ,iAlarmIdPointer(NULL, 0, 0)
+	{
+	}
+
+
+//
+//
+//
+
+
+//*************************************************************************************
+TInt RASAltClientSession::Connect()
+	{
+	const TVersion KVersion(KASAltVersionMajor, KASAltVersionMinor, KASAltVersionBuild);
+	return CreateSession(KAlarmAlertServerName, KVersion);
+	}
+
+
+//
+//
+//
+
+
+//*************************************************************************************
+/**
+ * Be notified if the alarm alert server dies for any reason.
+ */
+void RASAltClientSession::NotifyAlertServerDeath(TRequestStatus& aStatus) const
+	{
+	SendReceive(EASAltOpCodeLogon, aStatus);
+	}
+
+
+
+
+//*************************************************************************************
+/**
+ * Cancel the previous server-death notification
+ */
+void RASAltClientSession::NotifyOnResponseCancel() const
+	{
+#ifdef _DEBUG
+	const TInt error = 
+#endif
+	SendReceive(EASAltOpCodeNotifyCancel);
+	__ASSERT_DEBUG(error == KErrNone || error == KErrServerTerminated || error == KErrBadHandle, ASSrvStaticUtils::Fault(ASSrvStaticUtils::EASSrvFaultAlarmAlertServerFault));
+	}
+
+
+//*************************************************************************************
+void RASAltClientSession::SetQuietPeriod(const TTime& aTimeToRemainQuietUntil) const
+	{
+	TIpcArgs args(I64LOW(aTimeToRemainQuietUntil.Int64()),I64HIGH(aTimeToRemainQuietUntil.Int64()));
+	Send(EASAltOpCodeSetDeferTime, args);
+	}
+
+
+
+//*************************************************************************************
+void RASAltClientSession::SetAlarm(TRequestStatus& aStatus, const TASShdAlarm& aAlarm, const TFullName& aOwner, const TDesC8& aAlarmData)
+	{
+	TPckgC<TASShdAlarm> pAlarm(aAlarm);  
+	iAlarmPckg.Set(pAlarm);
+	iAlarmOwner.Copy(aOwner);
+	iAlarmData.Set(aAlarmData);
+	//
+	TIpcArgs args(&iAlarmPckg, &iAlarmOwner, &iAlarmData);
+	SendReceive(EASAltOpCodeSetAlarm, args, aStatus);
+	}
+
+
+
+//*****************************************
+//*    Multialarm version of interface    *
+//*****************************************
+
+/**
+Receive messages (asynchronously) from the Alarm Alert Server
+@param aStatus Returns the result code after the asynchronous call completes. use RASAltClientSession::NotifyOnResponseCancel() to cancel
+@param aTimeThatSnoozeShouldEnd On return has a time when  snooze period should end.
+@param aAlarmId On return Id of alarm which initiate this response
+*/
+void RASAltClientSession::NotifyOnResponse(TRequestStatus& aStatus, TTime& aTimeThatSnoozeShouldEnd, TAlarmId& aAlarmId)
+	{
+	iAlarmIdPointer.Set(reinterpret_cast<TUint8*>(&aAlarmId), sizeof(TAlarmId), sizeof(TAlarmId));
+	PrepareTimePointer(aTimeThatSnoozeShouldEnd);
+	TIpcArgs args(&iAlarmIdPointer, &iTimePointer );
+	SendReceive(EASAltOpCodeNotify, args, aStatus);
+	}
+
+
+/**
+Ask the alarm alert server to start playing the specified alarm sound
+@param aSoundFile Sound file name
+@param aAlarmId Id of alarm which should paly the sound
+ */
+void RASAltClientSession::StartPlayingSound(const TDesC& aSoundFile, TAlarmId aAlarmId) const
+	{
+	TIpcArgs args(&aSoundFile, aAlarmId);
+	Send(EASAltOpCodeStartPlayingSound, args);
+	}
+
+/**
+Ask the alarm alert server to stop playing all sounds (if any)
+*/
+void RASAltClientSession::StopPlayingSound() const
+	{
+	Send(EASAltOpCodeStopPlayingSoundAll);
+	}
+
+/**
+Ask the alarm alert server to stop playing the specified sound.
+@param aAlarmId Id of alarm which should stop playing sound
+ */
+void RASAltClientSession::StopPlayingSound(TAlarmId aAlarmId) const
+	{
+	TIpcArgs arg(aAlarmId);
+	Send(EASAltOpCodeStopPlayingSound, arg);
+	}
+
+/**
+Change the visibility of all notifying alarms
+@param aVisible Set to ETrue if alarms should be visible, EFalse otherwise
+*/
+void RASAltClientSession::SetVisibility(TBool aVisible) const
+	{
+	TIpcArgs args(aVisible);
+	Send(EASAltOpCodeVisibleAll, args);
+	}
+/**
+Change the visibility of the particular alarm.
+@param aVisible Set to ETrue if alarm should be visible, EFalse otherwise
+@param aAlarmId Id of alarm which visibility should be changed
+*/
+void RASAltClientSession::SetVisibility(TBool aVisible, TAlarmId aAlarmId) const
+	{
+	TIpcArgs args(aVisible, aAlarmId);
+	Send(EASAltOpCodeVisible, args);
+	}
+
+/**
+Update the Alarm Server's flags for all notifying alarms
+@param aAlarmAlertFlags Alarm Server's flags
+*/
+TInt RASAltClientSession::SetAlertServerState(TBitFlags aAlarmAlertFlags) const
+	{
+	//
+	TIpcArgs args(aAlarmAlertFlags.Value());
+	
+	Send(EASAltOpCodeSetStateAll, args);
+	return KErrNone; // error code is no longer propagated
+	}
+
+/**
+Update the Alarm Server's flags for particular alarm
+@param aAlarmAlertFlags Alarm Server's flags
+@param aAlarmId Id of alarm which should be updated
+*/
+
+TInt RASAltClientSession::SetAlertServerState(TBitFlags aAlarmAlertFlags, TAlarmId aAlarmId) const
+	{
+	//
+	TIpcArgs args(aAlarmAlertFlags.Value(), aAlarmId);
+	
+	Send(EASAltOpCodeSetState, args);
+	return KErrNone; // error code is no longer propagated
+	}
+
+
+
+/**
+Return the the time at which the current alarm should be snoozed until.
+@param aStatus Returns the result code after the asynchronous call completes.
+@param aTimeBuf On return time at which the current alarm should be snoozed until.
+ */
+void RASAltClientSession::TimeWhenQuietPeriodShouldEnd(TRequestStatus& aStatus,TPckgBuf<TTime>& aTimeBuf) const
+	{
+	TIpcArgs args(&aTimeBuf);
+	SendReceive(EASAltOpCodeGetEndQuietTime,args,aStatus);	
+	}	
+	
+
+/**
+Get the maximum number of simultaneously notifying alarms supported by GUI
+@param aMaxNumberOfAlarms On return number of supported alarms
+*/
+void RASAltClientSession::GetMaxNumberOfAlarms(TInt& aMaxNumberOfAlarms) const
+	{
+	TPckg<TInt> package(aMaxNumberOfAlarms);
+	TIpcArgs args( &package);
+	SendReceive(EASAltOpCodeGetMaxAlarms, args);
+	}
+
+/**
+Delete particular alarm form Alert Server 
+Do nothing if alarm with provided ID doesn't exist or .MaxNumberOfAlarms == 1
+@param aAlarmId ID of alarm which should be deleted
+*/
+	
+void RASAltClientSession::DeleteAlarm(TAlarmId aAlarmId) const
+	{
+	TIpcArgs args(aAlarmId);
+	Send(EASAltOpCodeDeleteAlarm, args);
+	}
+
+/**
+Delete all alarms form Alert Server 
+Do nothing if MaxNumberOfAlarms == 1
+*/
+	
+void RASAltClientSession::DeleteAlarm() const
+	{
+
+	Send(EASAltOpCodeDeleteAlarmAll);
+	}
+
+	
+
+//
+//
+//
+
+
+//*************************************************************************************
+/**
+ * Update the pointer to refer to the specified time
+ */
+void RASAltClientSession::PrepareTimePointer(TTime& aTime)
+	{
+	iTimePointer.Set(reinterpret_cast<TUint8*>(&aTime), sizeof(TTime), sizeof(TTime));
+	}
+
+
+