16f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev/* Copyright (c) 2013, The Linux Foundataion. All rights reserved.
2f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *
3f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * Redistribution and use in source and binary forms, with or without
4f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * modification, are permitted provided that the following conditions are
5f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * met:
6f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *     * Redistributions of source code must retain the above copyright
7f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       notice, this list of conditions and the following disclaimer.
8f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *     * Redistributions in binary form must reproduce the above
9f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       copyright notice, this list of conditions and the following
10f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       disclaimer in the documentation and/or other materials provided
11f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       with the distribution.
12b274848d051a4f2d5a9e7e3b152d26211c4b2e83Duy Truong *     * Neither the name of The Linux Foundation nor the names of its
13f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       contributors may be used to endorse or promote products derived
14f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *       from this software without specific prior written permission.
15f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *
16f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang *
28f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang */
29f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
306f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#ifndef __QCAMERA_THERMAL_ADAPTER__
316f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#define __QCAMERA_THERMAL_ADAPTER__
32f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
336f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevnamespace qcamera {
34f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
356f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevtypedef enum {
366f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCAMERA_THERMAL_NO_ADJUSTMENT = 0,
376f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCAMERA_THERMAL_SLIGHT_ADJUSTMENT,
386f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCAMERA_THERMAL_BIG_ADJUSTMENT,
396f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCAMERA_THERMAL_SHUTDOWN
406f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev} qcamera_thermal_level_enum_t;
41f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
426f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevtypedef enum {
436f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCAMERA_THERMAL_ADJUST_FPS,
446f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCAMERA_THERMAL_ADJUST_FRAMESKIP,
456f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev} qcamera_thermal_mode;
46f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
476f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevclass QCameraThermalCallback
486f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev{
496f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevpublic:
506f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    virtual int thermalEvtHandle(qcamera_thermal_level_enum_t level,
516f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev            void *userdata, void *data) = 0;
526f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    virtual ~QCameraThermalCallback() {}
536f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev};
54f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
556f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevclass QCameraThermalAdapter
566f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev{
576f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevpublic:
586f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static QCameraThermalAdapter& getInstance();
59f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
606f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int init(QCameraThermalCallback *thermalCb);
616f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void deinit();
62f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
636f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchevprivate:
646f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static char mStrCamera[];
656f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static char mStrCamcorder[];
66f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
676f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    static int thermalCallback(int level, void *userdata, void *data);
68f5198bf2ec5f39e8a46552172124bd7411f5c63fShuzhen Wang
696f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCameraThermalCallback *mCallback;
706f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    void *mHandle;
716f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int (*mRegister)(char *name,
726f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev            int (*callback)(int, void *userdata, void *data), void *data);
736f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int (*mUnregister)(int handle);
746f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int mCameraHandle;
756f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    int mCamcorderHandle;
766f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
776f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCameraThermalAdapter();
786f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCameraThermalAdapter(QCameraThermalAdapter const& copy); // not implemented
796f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev    QCameraThermalAdapter& operator=(QCameraThermalAdapter const& copy); // not implemented
806f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
816f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev};
826f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
836f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev}; // namespace qcamera
846f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev
856f83d735d8e3b918da42e6b559fcd0efb78133e5Iliyan Malchev#endif /* __QCAMERA_THERMAL_ADAPTER__ */
86