Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (C) 2004-2010 NXP Software
      3  * Copyright (C) 2010 The Android Open Source Project
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 /****************************************************************************************/
     19 /*  INCLUDE FILES                                                                       */
     20 /****************************************************************************************/
     21 
     22 #include "LVM_Timer.h"
     23 #include "LVM_Timer_Private.h"
     24 #include "LVM_Macros.h"
     25 
     26 /****************************************************************************************/
     27 /*  DEFINITIONS                                                                         */
     28 /****************************************************************************************/
     29 
     30 #define OneOverThousandInQ24 16777
     31 
     32 /****************************************************************************************/
     33 /*  INIT FUNCTION                                                                       */
     34 /****************************************************************************************/
     35 
     36 void LVM_Timer_Init (   LVM_Timer_Instance_t       *pInstance,
     37                         LVM_Timer_Params_t         *pParams     ){
     38 
     39     LVM_Timer_Instance_Private_t *pInstancePr;
     40     pInstancePr = (LVM_Timer_Instance_Private_t *)pInstance;
     41 
     42     pInstancePr->CallBackParam     = pParams->CallBackParam;
     43     pInstancePr->pCallBackParams   = pParams->pCallBackParams;
     44     pInstancePr->pCallbackInstance = pParams->pCallbackInstance;
     45     pInstancePr->pCallBack         = pParams->pCallBack;
     46     pInstancePr->TimerArmed        = 1;
     47 
     48     MUL32x16INTO32(pParams->SamplingRate,OneOverThousandInQ24,pInstancePr->RemainingTimeInSamples,16);  /* (Q0 * Q24) >>16 into Q8*/
     49     MUL32x16INTO32(pInstancePr->RemainingTimeInSamples,pParams->TimeInMs,pInstancePr->RemainingTimeInSamples,8);  /* (Q8 * Q0) >>8 into Q0*/
     50 }
     51 
     52 /****************************************************************************************/
     53 /*  END OF FILE                                                                         */
     54 /****************************************************************************************/
     55