• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) Texas Instruments - http://www.ti.com/
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "CameraHal.h"
18 
19 namespace android {
20 
21 const char CameraHal::PARAMS_DELIMITER []= ",";
22 
23 #if PPM_INSTRUMENTATION || PPM_INSTRUMENTATION_ABS
24 
25 struct timeval CameraHal::ppm_start;
26 
27 #endif
28 
29 #if PPM_INSTRUMENTATION
30 
31 /**
32    @brief PPM instrumentation
33 
34    Dumps the current time offset. The time reference point
35    lies within the CameraHAL constructor.
36 
37    @param str - log message
38    @return none
39 
40  */
PPM(const char * str)41 void CameraHal::PPM(const char* str){
42     struct timeval ppm;
43 
44     gettimeofday(&ppm, NULL);
45     ppm.tv_sec = ppm.tv_sec - ppm_start.tv_sec;
46     ppm.tv_sec = ppm.tv_sec * 1000000;
47     ppm.tv_sec = ppm.tv_sec + ppm.tv_usec - ppm_start.tv_usec;
48 
49     ALOGD("PPM: %s :%ld.%ld ms", str, ( ppm.tv_sec /1000 ), ( ppm.tv_sec % 1000 ));
50 }
51 
52 #elif PPM_INSTRUMENTATION_ABS
53 
54 /**
55    @brief PPM instrumentation
56 
57    Dumps the current time offset. The time reference point
58    lies within the CameraHAL constructor. This implemetation
59    will also dump the abosolute timestamp, which is useful when
60    post calculation is done with data coming from the upper
61    layers (Camera application etc.)
62 
63    @param str - log message
64    @return none
65 
66  */
PPM(const char * str)67 void CameraHal::PPM(const char* str){
68     struct timeval ppm;
69 
70     unsigned long long elapsed, absolute;
71     gettimeofday(&ppm, NULL);
72     elapsed = ppm.tv_sec - ppm_start.tv_sec;
73     elapsed *= 1000000;
74     elapsed += ppm.tv_usec - ppm_start.tv_usec;
75     absolute = ppm.tv_sec;
76     absolute *= 1000;
77     absolute += ppm.tv_usec /1000;
78 
79     ALOGD("PPM: %s :%llu.%llu ms : %llu ms", str, ( elapsed /1000 ), ( elapsed % 1000 ), absolute);
80 }
81 
82 #endif
83 
84 #if PPM_INSTRUMENTATION || PPM_INSTRUMENTATION_ABS
85 
86 /**
87    @brief PPM instrumentation
88 
89    Calculates and dumps the elapsed time using 'ppm_first' as
90    reference.
91 
92    @param str - log message
93    @return none
94 
95  */
PPM(const char * str,struct timeval * ppm_first,...)96 void CameraHal::PPM(const char* str, struct timeval* ppm_first, ...){
97     char temp_str[256];
98     struct timeval ppm;
99     unsigned long long absolute;
100     va_list args;
101 
102     va_start(args, ppm_first);
103     vsprintf(temp_str, str, args);
104     gettimeofday(&ppm, NULL);
105     absolute = ppm.tv_sec;
106     absolute *= 1000;
107     absolute += ppm.tv_usec /1000;
108     ppm.tv_sec = ppm.tv_sec - ppm_first->tv_sec;
109     ppm.tv_sec = ppm.tv_sec * 1000000;
110     ppm.tv_sec = ppm.tv_sec + ppm.tv_usec - ppm_first->tv_usec;
111 
112     ALOGD("PPM: %s :%ld.%ld ms :  %llu ms", temp_str, ( ppm.tv_sec /1000 ), ( ppm.tv_sec % 1000 ), absolute);
113 
114     va_end(args);
115 }
116 
117 #endif
118 
119 };
120 
121 
122