14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------*
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  ptimer.h  *
34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the 'License');          *
74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  you may not use this file except in compliance with the License.         *
84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  You may obtain a copy of the License at                                  *
104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0                           *
114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software      *
134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  distributed under the License is distributed on an 'AS IS' BASIS,        *
144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  See the License for the specific language governing permissions and      *
164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  limitations under the License.                                           *
174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/
194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef PTIMER_H
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define PTIMER_H
224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "PortPrefix.h"
264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ptypes.h"
274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @addtogroup PTimerModule PTimer API functions
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * API to facilitate computing elapsed time of operations.  The units of time
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * are milliseconds.
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @{
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** Typedef */
374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct PTimer_t PTimer;
384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Creates a new timer object.
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param timer PTimer handle.
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectPORTABLE_API ESR_ReturnCode PTimerCreate(PTimer **timer);
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Destroys the timer object.
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param timer PTimer handle.
504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectPORTABLE_API ESR_ReturnCode PTimerDestroy(PTimer *timer);
524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Starts the timer. This sets the reference time from which all new elapsed
554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * time are computed.  This does not reset the elapsed time to 0.  This is
564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * useful to pause the timer.
574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project **/
584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectPORTABLE_API ESR_ReturnCode PTimerStart(PTimer *timer);
594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Stops the timer.
624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project **/
634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectPORTABLE_API ESR_ReturnCode PTimerStop(PTimer *timer);
644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the timer elapsed time.  If the Timer is in the stopped state,
674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * successive calls to getElapsed() will always return the same value.  If the
684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Timer is in the started state, successive calls will return the elapsed
694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * time since the last time PTimerStart() was called.
704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectPORTABLE_API ESR_ReturnCode PTimerGetElapsed(PTimer *timer,
724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    asr_uint32_t *elapsed);
734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Resets the elapsed time to 0 and resets the reference time of the Timer.
764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * This effectively reset the timer in the same state it was right after
774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * creation.
784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project **/
794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectPORTABLE_API ESR_ReturnCode PTimerReset(PTimer *timer);
804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @}
834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
87