1 /* Copyright (c) 2017, The Linux Foundation. All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are
5 * met:
6 * * Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 * * Redistributions in binary form must reproduce the above
9 * copyright notice, this list of conditions and the following
10 * disclaimer in the documentation and/or other materials provided
11 * with the distribution.
12 * * Neither the name of The Linux Foundation nor the names of its
13 * contributors may be used to endorse or promote products derived
14 * from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 */
29
30 #define LOG_TAG "QCameraExtZoomTranslator"
31
32 #include <stdlib.h>
33 #include <utils/Errors.h>
34 #include "QCameraExtZoomTranslator.h"
35 #include <dlfcn.h>
36
37 extern "C" {
38 #include "mm_camera_dbg.h"
39 }
40
41 namespace qcamera {
42
43 /*===========================================================================
44 * FUNCTION : QCameraExtZoomTranslator constructor
45 *
46 * DESCRIPTION: class constructor
47 *
48 * PARAMETERS : none
49 *
50 * RETURN : void
51 *
52 *==========================================================================*/
QCameraExtZoomTranslator()53 QCameraExtZoomTranslator::QCameraExtZoomTranslator()
54 {
55 mLibHandle = NULL;
56 mInitSuccess = false;
57 memset(&mInitData, 0, sizeof(zoom_trans_init_data));
58 }
59
60 /*===========================================================================
61 * FUNCTION : QCameraExtZoomTranslator destructor
62 *
63 * DESCRIPTION: class destructor
64 *
65 * PARAMETERS : none
66 *
67 * RETURN : void
68 *
69 *==========================================================================*/
~QCameraExtZoomTranslator()70 QCameraExtZoomTranslator::~QCameraExtZoomTranslator()
71 {
72 // dlclose the lib here and not in deinit
73 }
74
75
76 /*===========================================================================
77 * FUNCTION : create
78 *
79 * DESCRIPTION: This is a static method to create QCameraExtZoomTranslator object.
80 * It calls the private constructor of the class and only returns a
81 * valid object if the library loading succeeds.
82 *
83 * PARAMETERS : None
84 *
85 * RETURN : Valid object pointer if succeeds
86 * NULL if fails
87 *
88 *==========================================================================*/
create()89 QCameraExtZoomTranslator* QCameraExtZoomTranslator::create()
90 {
91 QCameraExtZoomTranslator *pZoomTranslator = NULL;
92
93 // dlopen and dlsym here and if successful, create zoom translator object
94 // if (success) {
95 // pZoomTranslator = new QCameraExtZoomTranslator();
96 // }
97
98 return pZoomTranslator;
99 }
100
101
102 /*===========================================================================
103 * FUNCTION : init
104 *
105 * DESCRIPTION: This function passes the initialization data to the zoom
106 * translation library.
107 *
108 *
109 * PARAMETERS :
110 *@initData : Initialization data
111 *
112 * RETURN :
113 * NO_ERROR : Success
114 * INVALID_OPERATION : Failure
115 *
116 *==========================================================================*/
init(__unused zoom_trans_init_data initData)117 int32_t QCameraExtZoomTranslator::init(
118 __unused zoom_trans_init_data initData)
119 {
120 int32_t rc = INVALID_OPERATION;
121
122 // Pass the initData to the zoom translation lib and if the operation succeeds,
123 // set rc to NO_ERROR. Set member variable mInitSuccess to true.
124
125 return rc;
126 }
127
128
129 /*===========================================================================
130 * FUNCTION : getZoomValues
131 *
132 * DESCRIPTION: This function passes the user zoom to the zoom translation lib and
133 * gets back wide and tele zoom values corresponding to that user zoom.
134 *
135 *
136 * PARAMETERS :
137 *@userZoom : User zoom (zoom index into the zoom table)
138 *@wideZoom : Zoom for wide camera (zoom index into the zoom table)
139 *@teleZoom : Zoom for tele camera (zoom index into the zoom table)
140 *
141 * RETURN :
142 * NO_ERROR : Success
143 * INVALID_OPERATION : Failure
144 *
145 *==========================================================================*/
getZoomValues(__unused uint32_t userZoom,__unused uint32_t * wideZoom,__unused uint32_t * teleZoom)146 int32_t QCameraExtZoomTranslator::getZoomValues(
147 __unused uint32_t userZoom,
148 __unused uint32_t *wideZoom,
149 __unused uint32_t *teleZoom)
150 {
151 int32_t rc = INVALID_OPERATION;
152
153 // Pass the userzoom to the zoom translation lib to return wideZoom and teleZoom values.
154 // If the operation succeeds, set rc to NO_ERROR.
155
156 return rc;
157 }
158
159
160 /*===========================================================================
161 * FUNCTION : deInit
162 *
163 * DESCRIPTION: This function de-initializes zoom translation lib.
164 *
165 *
166 * PARAMETERS : None
167 *
168 * RETURN :
169 * NO_ERROR : Success
170 * INVALID_OPERATION : Failure
171 *
172 *==========================================================================*/
deInit()173 int32_t QCameraExtZoomTranslator::deInit()
174 {
175 int32_t rc = INVALID_OPERATION;
176
177 if (mInitSuccess) {
178 // Deinit the zoom translation lib and if successful, set rc to NO_ERROR.
179 // Do not dlclose here. dlclose in the destructor
180 }
181
182 return rc;
183 }
184
185
186 /*===========================================================================
187 * FUNCTION : isInitialized
188 *
189 * DESCRIPTION: Check if the zoom translator is initialized successfully
190 *
191 *
192 * PARAMETERS : None
193 *
194 * RETURN :
195 * true : Initialized successfully
196 * false : Not initialized
197 *
198 *==========================================================================*/
isInitialized()199 bool QCameraExtZoomTranslator::isInitialized()
200 {
201 return mInitSuccess;
202 }
203
204 }; // namespace qcamera
205