--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/platforms/os/Symbian/WVSS/src/os/timerclient.cpp Tue Jun 29 12:34:26 2010 +0100
@@ -0,0 +1,125 @@
+/*
+ * timerclient.cpp
+ *
+ * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
+ * All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 or BSD License which accompanies
+ * this distribution. The Eclipse Public License is available at
+ * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name Texas Instruments nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include "TIWhaDef.h"
+#include "wlantimer.h"
+#include "timerclient.h"
+#define __FILE_ID__ FILE_ID_139
+
+/* Make sure that while converting Ms to Us we are not exceeding max value of TInt */
+#define MAX_US_TIMEOUT (0x7FFFFFFF)
+#define MAX_MS_TIMEOUT (MAX_US_TIMEOUT / 1000)
+
+/**
+ * \fn TimerClient
+ * \brief Constructor
+ *
+ * Create a new timer object, icluding creating a timer in OSA
+ *
+ * \param hOs - The OS handle
+ */
+TimerClient::TimerClient (void* hOs, fTimerFunction pRoutine, TI_HANDLE hFuncHandle) :
+ iWlanOSA (GET_OSA(hOs)),
+ iWlanTimer (iWlanOSA->TimerCreate()),
+ fCb(pRoutine),
+ hCtx(hFuncHandle)
+{}
+
+/**
+ * \fn ~TimerClient
+ * \brief Destructor
+ *
+ * Destroy Timer
+ *
+ * \param
+ */
+TimerClient::~TimerClient()
+{
+ if (iWlanTimer && iWlanOSA)
+ {
+ iWlanOSA->TimerDestroy(iWlanTimer);
+ }
+}
+
+/**
+ * \fn OnTimeout
+ * \brief On Timer expiry
+ *
+ * Call the registered call back in TWD (timer.c)
+ *
+ * \param aCtx - not used
+ */
+void TimerClient::OnTimeout(TInt aCtx)
+{
+ fCb(hCtx);
+}
+
+/**
+ * \fn Start
+ * \brief start timer
+ *
+ * Save parameters and start timer in OSA
+ *
+ */
+void TimerClient::Start(TI_UINT32 uIntervalMsec)
+{
+ /* Make sure we are not exceeding the maximum value of TInt. */
+ TInt iIntervalUsec = (uIntervalMsec > MAX_MS_TIMEOUT) ? (MAX_US_TIMEOUT) : (uIntervalMsec * 1000);
+
+ if (iIntervalUsec == 0)
+ {
+ /* we will mark it as 1us to avoid errors. This is actually used to schedule context switch */
+ iIntervalUsec = 1;
+ }
+ /* Wlan Timer expects microseconds */
+ iWlanTimer->Enqueue(*this, 0, iIntervalUsec, TI_FALSE);
+}
+
+/**
+ * \fn Stop
+ * \brief stop timer
+ *
+ * stop timer
+ *
+ */
+void TimerClient::Stop()
+{
+ iWlanTimer->Dequeue();
+}
+