166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/* Copyright (c) 2013-2014, 2016, The Linux Foundation. All rights reserved.
266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Redistribution and use in source and binary forms, with or without
466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * modification, are permitted provided that the following conditions are
566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * met:
666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *     * Redistributions of source code must retain the above copyright
766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       notice, this list of conditions and the following disclaimer.
866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *     * Redistributions in binary form must reproduce the above
966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       copyright notice, this list of conditions and the following
1066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       disclaimer in the documentation and/or other materials provided
1166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       with the distribution.
1266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *     * Neither the name of The Linux Foundation nor the names of its
1366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       contributors may be used to endorse or promote products derived
1466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       from this software without specific prior written permission.
1566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
1666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
1766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
1966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
2066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
2366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
2566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
2666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
2866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin */
2966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
3066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin// System dependencies
3166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include <ctype.h>
3266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include <errno.h>
3366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
3466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin// Camera dependencies
3566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include "mm_qcamera_main_menu.h"
3666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include "mm_qcamera_app.h"
3766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include "mm_qcamera_dbg.h"
3866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
3966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
4066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Macro
4166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *===========================================================================*/
4266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
4366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define VIDEO_BUFFER_SIZE       (PREVIEW_WIDTH * PREVIEW_HEIGHT * 3/2)
4466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define THUMBNAIL_BUFFER_SIZE   (THUMBNAIL_WIDTH * THUMBNAIL_HEIGHT * 3/2)
4566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define SNAPSHOT_BUFFER_SIZE    (PICTURE_WIDTH * PICTURE_HEIGHT * 3/2)
4666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO:check this Macros with current app.
4766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
4866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
4966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Defines
5066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *===========================================================================*/
5166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//#define VIDEO_FRAMES_NUM      4
5266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define THUMBNAIL_FRAMES_NUM  1
5366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define SNAPSHOT_FRAMES_NUM   1
5466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_NUM_FORMAT        32
5566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define ZOOM_STEP             2
5666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define ZOOM_MIN_VALUE        0
5766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXPOSURE_COMPENSATION_MAXIMUM_NUMERATOR 12
5866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXPOSURE_COMPENSATION_MINIMUM_NUMERATOR -12
5966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXPOSURE_COMPENSATION_DEFAULT_NUMERATOR 0
6066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXPOSURE_COMPENSATION_DENOMINATOR 6
6166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
6266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: find correct values of Contrast defines.
6366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MIN_CONTRAST    0
6466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_DEF_CONTRAST    5
6566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MAX_CONTRAST    10
6666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_CONTRAST_STEP   1
6766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
6866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: find correct values of Brightness defines.
6966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MIN_BRIGHTNESS  0
7066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_DEF_BRIGHTNESS  3
7166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MAX_BRIGHTNESS  6
7266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_BRIGHTNESS_STEP 1
7366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
7466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: find correct values of Saturation defines.
7566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MIN_SATURATION  0
7666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_DEF_SATURATION  5
7766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MAX_SATURATION  10
7866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_SATURATION_STEP 1
7966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
8066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MIN_SHARPNESS 0
8166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_MAX_SHARPNESS 10
8266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_DEF_SHARPNESS 5
8366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAMERA_SHARPNESS_STEP 1
8466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
8566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_MAIN_MENU_TBL_T camera_main_menu_tbl[] = {
8666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {START_PREVIEW,               "Start preview"},
8766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {STOP_PREVIEW,               "Stop preview/video"},
8866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {SET_WHITE_BALANCE,          "Set white balance mode"},
8966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {SET_TINTLESS_ENABLE,        "Set Tintless Enable"},
9066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {SET_TINTLESS_DISABLE,       "Set Tintless Disable"},
9166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {SET_EXP_METERING,           "Set exposure metering mode"},
9266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {GET_CTRL_VALUE,             "Get control value menu"},
9366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {TOGGLE_AFR,                 "Toggle auto frame rate. Default fixed frame rate"},
9466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {SET_ISO,                    "ISO changes."},
9566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BRIGHTNESS_GOTO_SUBMENU,    "Brightness changes."},
9666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {CONTRAST_GOTO_SUBMENU,      "Contrast changes."},
9766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {EV_GOTO_SUBMENU,            "EV changes."},
9866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {SATURATION_GOTO_SUBMENU,    "Saturation changes."},
9966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {SET_ZOOM,                   "Set Digital Zoom."},
10066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {SET_SHARPNESS,              "Set Sharpness."},
10166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {TAKE_JPEG_SNAPSHOT,         "Take a snapshot"},
10266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {START_RECORDING,            "Start RECORDING"},
10366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {STOP_RECORDING,             "Stop RECORDING"},
10466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BEST_SHOT,                  "Set best-shot mode"},
10566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {LIVE_SHOT,                  "Take a live snapshot"},
10666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {FLASH_MODES,                "Set Flash modes"},
10766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {TOGGLE_ZSL,                 "Toggle ZSL On/Off"},
10866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {TAKE_RAW_SNAPSHOT,          "Take RAW snapshot"},
10966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {SWITCH_SNAP_RESOLUTION,     "Select Jpeg resolution"},
11066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {TOGGLE_WNR,                 "Toggle Wavelet Denoise"},
11166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {EXIT,                       "Exit"}
11266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
11366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
11466f9976540f830b0090ff2ca557b0364a53f2008Patrick TjinCAMERA_SENSOR_MENU_TLB_T sensor_tbl[] = {
11566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        {"Primary Camera",      0},
11666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        {"Secondary Camera",    0},
11766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        {"Camera Sensor 3",     0},
11866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        {"Camera Sensor 4",     0}
11966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
12066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
12166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_BRIGHTNESS_TBL_T brightness_change_tbl[] = {
12266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {INC_BRIGHTNESS, "Increase Brightness by one step."},
12366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {DEC_BRIGHTNESS, "Decrease Brightness by one step."},
12466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
12566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
12666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_CONTRST_TBL_T contrast_change_tbl[] = {
12766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {INC_CONTRAST, "Increase Contrast by one step."},
12866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {DEC_CONTRAST, "Decrease Contrast by one step."},
12966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
13066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
13166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_EV_TBL_T camera_EV_tbl[] = {
13266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {INCREASE_EV, "Increase EV by one step."},
13366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {DECREASE_EV, "Decrease EV by one step."},
13466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
13566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
13666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_SATURATION_TBL_T camera_saturation_tbl[] = {
13766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {INC_SATURATION, "Increase Satuation by one step."},
13866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {DEC_SATURATION, "Decrease Satuation by one step."},
13966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
14066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
14166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst CAMERA_SHARPNESS_TBL_T camera_sharpness_tbl[] = {
14266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {INC_SHARPNESS, "Increase Sharpness."},
14366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {DEC_SHARPNESS, "Decrease Sharpness."},
14466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
14566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
14666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst WHITE_BALANCE_TBL_T white_balance_tbl[] = {
14766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   WB_AUTO,               "White Balance - Auto"},
14866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   WB_INCANDESCENT,       "White Balance - Incandescent"},
14966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   WB_FLUORESCENT,        "White Balance - Fluorescent"},
15066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   WB_WARM_FLUORESCENT,   "White Balance - Warm Fluorescent"},
15166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   WB_DAYLIGHT,           "White Balance - Daylight"},
15266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   WB_CLOUDY_DAYLIGHT,    "White Balance - Cloudy Daylight"},
15366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   WB_TWILIGHT,           "White Balance - Twilight"},
15466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   WB_SHADE,              "White Balance - Shade"},
15566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
15666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
15766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst GET_CTRL_TBL_T get_ctrl_tbl[] = {
15866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {     WHITE_BALANCE_STATE,            "Get white balance state (auto/off)"},
15966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {     WHITE_BALANCE_TEMPERATURE,      "Get white balance temperature"},
16066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {     BRIGHTNESS_CTRL,                "Get brightness value"},
16166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {     EV,                             "Get exposure value"},
16266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {     CONTRAST_CTRL,                  "Get contrast value"},
16366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {     SATURATION_CTRL,                "Get saturation value"},
16466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {     SHARPNESS_CTRL,                 "Get sharpness value"},
16566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
16666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
16766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst EXP_METERING_TBL_T exp_metering_tbl[] = {
16866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   AUTO_EXP_FRAME_AVG,          "Exposure Metering - Frame Average"},
16966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   AUTO_EXP_CENTER_WEIGHTED,    "Exposure Metering - Center Weighted"},
17066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   AUTO_EXP_SPOT_METERING,      "Exposure Metering - Spot Metering"},
17166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   AUTO_EXP_SMART_METERING,     "Exposure Metering - Smart Metering"},
17266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   AUTO_EXP_USER_METERING,      "Exposure Metering - User Metering"},
17366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   AUTO_EXP_SPOT_METERING_ADV,  "Exposure Metering - Spot Metering Adv"},
17466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   AUTO_EXP_CENTER_WEIGHTED_ADV,"Exposure Metering - Center Weighted Adv"},
17566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
17666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
17766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst ISO_TBL_T iso_tbl[] = {
17866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   ISO_AUTO,   "ISO: Auto"},
17966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   ISO_DEBLUR, "ISO: Deblur"},
18066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   ISO_100,    "ISO: 100"},
18166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   ISO_200,    "ISO: 200"},
18266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   ISO_400,    "ISO: 400"},
18366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   ISO_800,    "ISO: 800"},
18466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   ISO_1600,   "ISO: 1600"},
18566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
18666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
18766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst ZOOM_TBL_T zoom_tbl[] = {
18866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   ZOOM_IN,  "Zoom In one step"},
18966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   ZOOM_OUT, "Zoom Out one step"},
19066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
19166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
19266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst BESTSHOT_MODE_TBT_T bestshot_mode_tbl[] = {
19366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_AUTO,           "Bestshot Mode: Auto"},
19466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_ACTION,         "Bestshot Mode: Action"},
19566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_PORTRAIT,       "Bestshot Mode: Portrait"},
19666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_LANDSCAPE,      "Bestshot Mode: Landscape"},
19766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_NIGHT,          "Bestshot Mode: Night"},
19866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_NIGHT_PORTRAIT, "Bestshot Mode: Night Portrait"},
19966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_THEATRE,        "Bestshot Mode: Theatre"},
20066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_BEACH,          "Bestshot Mode: Beach"},
20166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_SNOW,           "Bestshot Mode: Snow"},
20266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_SUNSET,         "Bestshot Mode: Sunset"},
20366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_ANTISHAKE,      "Bestshot Mode: Antishake"},
20466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_FIREWORKS,      "Bestshot Mode: Fireworks"},
20566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_SPORTS,         "Bestshot Mode: Sports"},
20666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_PARTY,          "Bestshot Mode: Party"},
20766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_CANDLELIGHT,    "Bestshot Mode: Candlelight"},
20866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_ASD,            "Bestshot Mode: ASD"},
20966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_BACKLIGHT,      "Bestshot Mode: Backlight"},
21066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_FLOWERS,        "Bestshot Mode: Flowers"},
21166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_AR,             "Bestshot Mode: Augmented Reality"},
21266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {BESTSHOT_HDR,            "Bestshot Mode: HDR"},
21366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
21466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
21566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinconst FLASH_MODE_TBL_T flashmodes_tbl[] = {
21666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   FLASH_MODE_OFF,   "Flash Mode Off"},
21766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   FLASH_MODE_AUTO,  "Flash Mode Auto"},
21866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   FLASH_MODE_ON,    "Flash Mode On"},
21966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  {   FLASH_MODE_TORCH, "Flash Mode Torch"},
22066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
22166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
22266f9976540f830b0090ff2ca557b0364a53f2008Patrick TjinDIMENSION_TBL_T dimension_tbl[] = {
22366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{VGA_WIDTH,      VGA_HEIGHT,      "VGA",   "Size: VGA <640x480>"   , 0},
22466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{MP1_WIDTH,      MP1_HEIGHT,      "1MP",   "Size: 1MP <1280x960>"  , 0},
22566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{MP5_WIDTH,      MP5_HEIGHT,      "5MP",   "Size: 5MP <2592x1944>",  0},
22666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{MP8_WIDTH,      MP8_HEIGHT,      "8MP",   "Size: 8MP <3264x2448>",  0},
22766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{MP12_WIDTH,     MP12_HEIGHT,     "12MP",  "Size: 12MP <4000x3000>", 0},
22866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
22966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
23066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
23166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Forward declarations
23266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *===========================================================================*/
23366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//static void system_dimension_set(mm_camera_test_obj_t *test_obj);
23466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
23566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Static global variables
23666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *===========================================================================*/
23766f9976540f830b0090ff2ca557b0364a53f2008Patrick TjinUSER_INPUT_DISPLAY_T input_display;
23866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint preview_video_resolution_flag = 0;
23966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
24066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: default values.
24166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 1
24266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint brightness = CAMERA_DEF_BRIGHTNESS;
24366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint contrast = CAMERA_DEF_CONTRAST;
24466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint saturation = CAMERA_DEF_SATURATION;
24566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint sharpness = CAMERA_DEF_SHARPNESS;
24666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#else
24766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint brightness = 0;
24866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint contrast = 0;
24966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint saturation = 0;
25066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint sharpness = 0;
25166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
25266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO: find new method to calculate ev.
25366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//int32_t ev_numerator = EXPOSURE_COMPENSATION_DEFAULT_NUMERATOR;
25466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
25566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//TODO:
25666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//fps_mode_t fps_mode = FPS_MODE_FIXED;
25766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint zoom_level;
25866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint zoom_max_value;
25966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint cam_id;
26066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint is_rec = 0;
26166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
26266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
26366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic int submain();
26466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
26566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
26666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION    - keypress_to_event -
26766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
26866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
26966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *==========================================================================*/
27066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint keypress_to_event(char keypress)
27166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
27266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  int out_buf = INVALID_KEY_PRESS;
27366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  if ((keypress >= 'A' && keypress <= 'Z') ||
27466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    (keypress >= 'a' && keypress <= 'z')) {
27566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    out_buf = tolower(keypress);
27666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    out_buf = out_buf - 'a';
27766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (keypress >= '0' && keypress <= '9') {
27866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    out_buf = keypress - '0';
27966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
28066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return out_buf;
28166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
28266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
28366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint next_menu(menu_id_change_t current_menu_id, char keypress, camera_action_t * action_id_ptr, int * action_param)
28466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
28566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  int output_to_event;
28666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  menu_id_change_t next_menu_id = MENU_ID_INVALID;
28766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  * action_id_ptr = ACTION_NO_ACTION;
28866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
28966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  output_to_event = keypress_to_event(keypress);
29066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  LOGD("current_menu_id=%d\n",current_menu_id);
29166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("output_to_event=%d\n",output_to_event);
29266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  switch(current_menu_id) {
29366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_MAIN:
29466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      switch(output_to_event) {
29566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case START_PREVIEW:
29666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_START_PREVIEW;
29766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("START_PREVIEW\n");
29866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
29966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case STOP_PREVIEW:
30066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_STOP_PREVIEW;
30166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("STOP_PREVIEW\n");
30266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
30366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
30466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case SET_WHITE_BALANCE:
30566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_WHITEBALANCECHANGE;
30666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_WHITEBALANCECHANGE = %d\n", next_menu_id);
30766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
30866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
30966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case SET_TINTLESS_ENABLE:
31066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_SET_TINTLESS_ENABLE;
31166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
31266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_TINTLESSENABLE = %d\n", next_menu_id);
31366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
31466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
31566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case SET_TINTLESS_DISABLE:
31666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_SET_TINTLESS_DISABLE;
31766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
31866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_TINTLESSDISABLE = %d\n", next_menu_id);
31966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
32066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
32166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case SET_EXP_METERING:
32266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_EXPMETERINGCHANGE;
32366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_EXPMETERINGCHANGE = %d\n", next_menu_id);
32466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
32566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
32666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case GET_CTRL_VALUE:
32766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_GET_CTRL_VALUE;
32866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_GET_CTRL_VALUE = %d\n", next_menu_id);
32966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
33066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
33166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BRIGHTNESS_GOTO_SUBMENU:
33266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_BRIGHTNESSCHANGE;
33366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_BRIGHTNESSCHANGE = %d\n", next_menu_id);
33466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
33566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
33666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case CONTRAST_GOTO_SUBMENU:
33766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_CONTRASTCHANGE;
33866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
33966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
34066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case EV_GOTO_SUBMENU:
34166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_EVCHANGE;
34266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
34366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
34466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case SATURATION_GOTO_SUBMENU:
34566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_SATURATIONCHANGE;
34666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
34766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
34866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case TOGGLE_AFR:
34966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_TOGGLE_AFR;
35066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_TOGGLEAFR = %d\n", next_menu_id);
35166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
35266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
35366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case SET_ISO:
35466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_ISOCHANGE;
35566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_ISOCHANGE = %d\n", next_menu_id);
35666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
35766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
35866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case SET_ZOOM:
35966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_ZOOMCHANGE;
36066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_ZOOMCHANGE = %d\n", next_menu_id);
36166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
36266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
36366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BEST_SHOT:
36466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_BESTSHOT;
36566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_BESTSHOT = %d\n", next_menu_id);
36666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
36766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
36866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case LIVE_SHOT:
36966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_TAKE_LIVE_SNAPSHOT;
37066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("\nTaking Live snapshot\n");
37166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
37266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
37366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case FLASH_MODES:
37466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_FLASHMODE;
37566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_FLASHMODE = %d\n", next_menu_id);
37666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
37766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
37866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case SET_SHARPNESS:
37966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_SHARPNESSCHANGE;
38066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_SHARPNESSCHANGE = %d\n", next_menu_id);
38166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
38266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
38366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case SWITCH_SNAP_RESOLUTION:
38466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_SWITCH_RES;
38566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_SWITCH_RES = %d\n", next_menu_id);
38666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
38766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
38866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case TAKE_JPEG_SNAPSHOT:
38966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_TAKE_JPEG_SNAPSHOT;
39066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          printf("\n Taking JPEG snapshot\n");
39166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
39266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
39366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case START_RECORDING:
39466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_START_RECORDING;
39566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("Start recording\n");
39666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
39766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case STOP_RECORDING:
39866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_STOP_RECORDING;
39966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("Stop recording\n");
40066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
40166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case TOGGLE_ZSL:
40266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_TOGGLE_ZSL;
40366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("Toggle ZSL\n");
40466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
40566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case TAKE_RAW_SNAPSHOT:
40666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            * action_id_ptr = ACTION_TAKE_RAW_SNAPSHOT;
40766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            next_menu_id = MENU_ID_MAIN;
40866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            LOGD("Capture RAW\n");
40966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
41066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case TOGGLE_WNR:
41166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            * action_id_ptr = ACTION_TOGGLE_WNR;
41266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            next_menu_id = MENU_ID_MAIN;
41366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            LOGD("Toggle WNR");
41466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
41566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case EXIT:
41666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_EXIT;
41766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("Exit \n");
41866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
41966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
42066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
42166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          LOGD("next_menu_id = MENU_ID_MAIN = %d\n", next_menu_id);
42266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
42366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
42466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
42566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
42666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_SWITCH_RES:
42766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("MENU_ID_SWITCH_RES\n");
42866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        *action_id_ptr = ACTION_SWITCH_RESOLUTION;
42966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        *action_param = output_to_event;
43066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        int available_sizes = sizeof(dimension_tbl)/sizeof(dimension_tbl[0]);
43166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if ( ( *action_param >= 0 ) &&
43266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin             ( *action_param < available_sizes ) &&
43366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin             ( dimension_tbl[*action_param].supported )) {
43466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            next_menu_id = MENU_ID_MAIN;
43566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
43666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        else {
43766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = current_menu_id;
43866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
43966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        break;
44066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
44166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_SENSORS:
44266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = MENU_ID_MAIN;
44366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        *action_id_ptr = ACTION_SWITCH_CAMERA;
44466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        *action_param = output_to_event;
44566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        break;
44666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
44766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_WHITEBALANCECHANGE:
44866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      printf("MENU_ID_WHITEBALANCECHANGE\n");
44966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      if (output_to_event >= WB_MAX) {
45066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = current_menu_id;
45166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_NO_ACTION;
45266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      } else {
45366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = MENU_ID_MAIN;
45466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_SET_WHITE_BALANCE;
45566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_param = output_to_event;
45666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
45766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
45866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
45966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_EXPMETERINGCHANGE:
46066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      printf("MENU_ID_EXPMETERINGCHANGE\n");
46166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      if (output_to_event >= AUTO_EXP_MAX) {
46266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = current_menu_id;
46366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_NO_ACTION;
46466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      } else {
46566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = MENU_ID_MAIN;
46666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_SET_EXP_METERING;
46766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_param = output_to_event;
46866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
46966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
47066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
47166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_GET_CTRL_VALUE:
47266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      printf("MENU_ID_GET_CTRL_VALUE\n");
47366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      * action_id_ptr = ACTION_GET_CTRL_VALUE;
47466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      if (output_to_event > 0 &&
47566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        output_to_event <= (int)(sizeof(get_ctrl_tbl)/sizeof(get_ctrl_tbl[0]))) {
47666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
47766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_param = output_to_event;
47866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
47966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      else {
48066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = current_menu_id;
48166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
48266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
48366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
48466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_BRIGHTNESSCHANGE:
48566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      switch (output_to_event) {
48666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case INC_BRIGHTNESS:
48766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_BRIGHTNESS_INCREASE;
48866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
48966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
49066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
49166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case DEC_BRIGHTNESS:
49266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_BRIGHTNESS_DECREASE;
49366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
49466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
49566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
49666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
49766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_BRIGHTNESSCHANGE;
49866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
49966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
50066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
50166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
50266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_CONTRASTCHANGE:
50366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      switch (output_to_event) {
50466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case INC_CONTRAST:
50566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_CONTRAST_INCREASE;
50666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
50766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
50866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
50966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case DEC_CONTRAST:
51066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_CONTRAST_DECREASE;
51166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
51266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
51366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
51466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
51566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_CONTRASTCHANGE;
51666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
51766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
51866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
51966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
52066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_EVCHANGE:
52166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      switch (output_to_event) {
52266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case INCREASE_EV:
52366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_EV_INCREASE;
52466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
52566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
52666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
52766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case DECREASE_EV:
52866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_EV_DECREASE;
52966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
53066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
53166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
53266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
53366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_EVCHANGE;
53466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
53566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
53666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
53766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
53866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_SATURATIONCHANGE:
53966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      switch (output_to_event) {
54066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case INC_SATURATION:
54166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_SATURATION_INCREASE;
54266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
54366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
54466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
54566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case DEC_SATURATION:
54666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_SATURATION_DECREASE;
54766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
54866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
54966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
55066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
55166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_EVCHANGE;
55266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
55366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
55466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
55566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
55666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_ISOCHANGE:
55766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      printf("MENU_ID_ISOCHANGE\n");
55866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      if (output_to_event >= ISO_MAX) {
55966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = current_menu_id;
56066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_NO_ACTION;
56166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      } else {
56266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = MENU_ID_MAIN;
56366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_SET_ISO;
56466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_param = output_to_event;
56566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
56666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
56766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
56866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_ZOOMCHANGE:
56966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      * action_id_ptr = ACTION_SET_ZOOM;
57066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      if (output_to_event > 0 &&
57166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        output_to_event <= (int)(sizeof(zoom_tbl)/sizeof(zoom_tbl[0]))) {
57266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
57366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_param = output_to_event;
57466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      } else {
57566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = current_menu_id;
57666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
57766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
57866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
57966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_SHARPNESSCHANGE:
58066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      switch (output_to_event) {
58166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case INC_SHARPNESS:
58266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_SHARPNESS_INCREASE;
58366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
58466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
58566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case DEC_SHARPNESS:
58666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          * action_id_ptr = ACTION_SHARPNESS_DECREASE;
58766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_MAIN;
58866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
58966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
59066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          next_menu_id = MENU_ID_SHARPNESSCHANGE;
59166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
59266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
59366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
59466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
59566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_BESTSHOT:
59666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      if (output_to_event >= BESTSHOT_MAX) {
59766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = current_menu_id;
59866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_NO_ACTION;
59966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      } else {
60066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = MENU_ID_MAIN;
60166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_SET_BESTSHOT_MODE;
60266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_param = output_to_event;
60366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
60466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
60566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
60666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    case MENU_ID_FLASHMODE:
60766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      if (output_to_event >= FLASH_MODE_MAX) {
60866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = current_menu_id;
60966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_NO_ACTION;
61066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      } else {
61166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = MENU_ID_MAIN;
61266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_id_ptr = ACTION_SET_FLASH_MODE;
61366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        * action_param = output_to_event;
61466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
61566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
61666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
61766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    default:
61866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      LOGD("menu id is wrong: %d\n", current_menu_id);
61966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      break;
62066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
62166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
62266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return next_menu_id;
62366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
62466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
62566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
62666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION    - print_menu_preview_video -
62766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
62866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
62966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
63066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void print_menu_preview_video(void) {
63166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
63266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  if (!is_rec) {
63366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\n");
63466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("===========================================\n");
63566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("      Camera is in preview/video mode now        \n");
63666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("===========================================\n\n");
63766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else {
63866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\n");
63966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("===========================================\n");
64066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("      Camera is in RECORDING mode now       \n");
64166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("        Press 'Q' To Stop Recording          \n");
64266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("        Press 'S' To Take Live Snapshot       \n");
64366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("===========================================\n\n");
64466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
64566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char menuNum = 'A';
64666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0; i < sizeof(camera_main_menu_tbl)/sizeof(camera_main_menu_tbl[0]); i++) {
64766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if (i == BASE_OFFSET) {
64866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      menuNum = '1';
64966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
65066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
65166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("%c.  %s\n", menuNum, camera_main_menu_tbl[i].menu_name);
65266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    menuNum++;
65366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
65466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
65566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice: ");
65666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
65766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
65866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
65966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
66066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_wb_change_tbl(void) {
66166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
66266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\n");
66366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n");
66466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("      Camera is in white balance change mode       \n");
66566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n\n");
66666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
66766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char submenuNum = 'A';
66866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0 ; i < sizeof(white_balance_tbl) /
66966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                   sizeof(white_balance_tbl[0]); i++) {
67066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("%c.  %s\n", submenuNum, white_balance_tbl[i].wb_name);
67166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        submenuNum++;
67266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
67366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice for White Balance modes: ");
67466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
67566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
67666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
67766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_get_ctrl_value_tbl(void) {
67866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
67966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\n");
68066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n");
68166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("      Camera is in get control value mode       \n");
68266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n\n");
68366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
68466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char submenuNum = 'A';
68566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0 ; i < sizeof(get_ctrl_tbl) /
68666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                   sizeof(get_ctrl_tbl[0]); i++) {
68766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("%c.  %s\n", submenuNum, get_ctrl_tbl[i].get_ctrl_name);
68866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        submenuNum++;
68966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
69066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice for control value you want to get: ");
69166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
69266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
69366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
69466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_exp_metering_change_tbl(void) {
69566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
69666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\n");
69766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n");
69866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("      Camera is in exposure metering change mode       \n");
69966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n\n");
70066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
70166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char submenuNum = 'A';
70266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0 ; i < sizeof(exp_metering_tbl) /
70366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                   sizeof(exp_metering_tbl[0]); i++) {
70466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("%c.  %s\n", submenuNum, exp_metering_tbl[i].exp_metering_name);
70566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        submenuNum++;
70666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
70766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice for exposure metering modes: ");
70866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
70966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
71066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
71166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_contrast_change_tbl(void) {
71266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    unsigned int i;
71366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
71466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\n");
71566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("==========================================================\n");
71666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("      Camera is in change contrast resolution mode       \n");
71766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("==========================================================\n\n");
71866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
71966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char contrastmenuNum = 'A';
72066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    for (i = 0; i < sizeof(contrast_change_tbl) /
72166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    sizeof(contrast_change_tbl[0]); i++) {
72266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("%c.  %s\n", contrastmenuNum,
72366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                            contrast_change_tbl[i].contrast_name);
72466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        contrastmenuNum++;
72566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
72666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
72766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\nPlease enter your choice for contrast Change: ");
72866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return;
72966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
73066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
73166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_EV_change_tbl(void) {
73266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
73366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
73466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\n");
73566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("===========================================\n");
73666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("      Camera is in EV change mode now       \n");
73766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("===========================================\n\n");
73866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
73966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char submenuNum = 'A';
74066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0; i < sizeof(camera_EV_tbl)/sizeof(camera_EV_tbl[0]); i++) {
74166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("%c.  %s\n", submenuNum, camera_EV_tbl[i].EV_name);
74266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    submenuNum++;
74366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
74466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
74566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice for EV changes: ");
74666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
74766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
74866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
74966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_resolution_change_tbl(void) {
75066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    unsigned int i;
75166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
75266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\n");
75366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("==========================================================\n");
75466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("      Camera is in snapshot resolution mode               \n");
75566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("==========================================================\n\n");
75666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
75766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    for (i = 0; i < sizeof(dimension_tbl) /
75866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      sizeof(dimension_tbl[0]); i++) {
75966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if ( dimension_tbl[i].supported ) {
76066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("%d.  %s\n", i,
76166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    dimension_tbl[i].str_name);
76266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
76366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
76466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
76566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\nPlease enter your choice for Resolution: ");
76666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return;
76766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
76866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
76966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_zoom_change_tbl(void) {
77066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    unsigned int i;
77166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    zoom_max_value = MAX_ZOOMS_CNT;
77266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\nCurrent Zoom Value = %d ,Max Zoom Value = %d\n",zoom_level,zoom_max_value);
77366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char submenuNum = 'A';
77466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    for (i = 0 ; i < sizeof(zoom_tbl) /
77566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                   sizeof(zoom_tbl[0]); i++) {
77666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("%c.  %s\n", submenuNum, zoom_tbl[i].zoom_direction_name);
77766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        submenuNum++;
77866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
77966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\nPlease enter your choice for zoom change direction: ");
78066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return;
78166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
78266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
78366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_brightness_change_tbl(void) {
78466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    unsigned int i;
78566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
78666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\n");
78766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("==========================================================\n");
78866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("      Camera is in change brightness mode       \n");
78966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("==========================================================\n\n");
79066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
79166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char brightnessmenuNum = 'A';
79266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    for (i = 0; i < sizeof(brightness_change_tbl) /
79366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    sizeof(brightness_change_tbl[0]); i++) {
79466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("%c.  %s\n", brightnessmenuNum,
79566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                            brightness_change_tbl[i].brightness_name);
79666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        brightnessmenuNum++;
79766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
79866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
79966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\nPlease enter your choice for Brightness Change: ");
80066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return;
80166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
80266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
80366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_saturation_change_tbl(void) {
80466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    unsigned int i;
80566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
80666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\n");
80766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("==========================================================\n");
80866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("      Camera is in change saturation mode       \n");
80966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("==========================================================\n\n");
81066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
81166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char saturationmenuNum = 'A';
81266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    for (i = 0; i < sizeof(camera_saturation_tbl) /
81366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    sizeof(camera_saturation_tbl[0]); i++) {
81466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("%c.  %s\n", saturationmenuNum,
81566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                            camera_saturation_tbl[i].saturation_name);
81666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        saturationmenuNum++;
81766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
81866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
81966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("\nPlease enter your choice for Saturation Change: ");
82066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return;
82166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
82266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
82366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_iso_change_tbl(void) {
82466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
82566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\n");
82666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n");
82766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("      Camera is in ISO change mode       \n");
82866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n\n");
82966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
83066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char submenuNum = 'A';
83166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0 ; i < sizeof(iso_tbl) /
83266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                   sizeof(iso_tbl[0]); i++) {
83366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("%c.  %s\n", submenuNum, iso_tbl[i].iso_modes_name);
83466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        submenuNum++;
83566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
83666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice for iso modes: ");
83766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
83866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
83966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
84066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_preview_video_sharpness_change_tbl(void) {
84166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
84266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\n");
84366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n");
84466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("      Camera is in sharpness change mode       \n");
84566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("==========================================================\n\n");
84666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
84766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char submenuNum = 'A';
84866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0 ; i < sizeof(camera_sharpness_tbl) /
84966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                   sizeof(camera_sharpness_tbl[0]); i++) {
85066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("%c.  %s\n", submenuNum, camera_sharpness_tbl[i].sharpness_name);
85166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        submenuNum++;
85266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
85366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice for sharpness modes: ");
85466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
85566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
85666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
85766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_set_bestshot_tbl(void)
85866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
85966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
86066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
86166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\n");
86266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("===========================================\n");
86366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("      Camera is in set besthot mode now       \n");
86466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("===========================================\n\n");
86566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
86666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
86766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char bsmenuNum = 'A';
86866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0; i < sizeof(bestshot_mode_tbl)/sizeof(bestshot_mode_tbl[0]); i++) {
86966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("%c.  %s\n", bsmenuNum,
87066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      bestshot_mode_tbl[i].name);
87166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    bsmenuNum++;
87266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
87366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
87466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice of Bestshot Mode: ");
87566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
87666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
87766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
87866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_set_flashmode_tbl(void)
87966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
88066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
88166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
88266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\n");
88366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("===========================================\n");
88466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("      Camera is in set flash mode now       \n");
88566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("===========================================\n\n");
88666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
88766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
88866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char bsmenuNum = 'A';
88966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0; i < sizeof(flashmodes_tbl)/sizeof(flashmodes_tbl[0]); i++) {
89066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("%c.  %s\n", bsmenuNum,
89166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      flashmodes_tbl[i].name);
89266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    bsmenuNum++;
89366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
89466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
89566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice of Bestshot Mode: ");
89666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
89766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
89866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
89966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic void camera_sensors_tbl(void)
90066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
90166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  unsigned int i;
90266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  size_t available_sensors = sizeof(sensor_tbl)/sizeof(sensor_tbl[0]);
90366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
90466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\n");
90566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("===========================================\n");
90666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("      Camera Sensor to be used:            \n");
90766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("===========================================\n\n");
90866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
90966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
91066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char bsmenuNum = 'A';
91166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  for (i = 0; ( i < available_sensors ) && ( sensor_tbl[i].present ) ; i++) {
91266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("%c.  %s\n", bsmenuNum,
91366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            sensor_tbl[i].menu_name);
91466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    bsmenuNum++;
91566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
91666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
91766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("\nPlease enter your choice for sensor: ");
91866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return;
91966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
92066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
92166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
92266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - increase_contrast -
92366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
92466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
92566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
92666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_contrast (mm_camera_lib_handle *lib_handle) {
92766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        contrast += CAMERA_CONTRAST_STEP;
92866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (contrast > CAMERA_MAX_CONTRAST) {
92966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                contrast = CAMERA_MAX_CONTRAST;
93066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                printf("Reached max CONTRAST. \n");
93166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
93266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("Increase Contrast to %d\n", contrast);
93366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return mm_camera_lib_send_command(lib_handle,
93466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          MM_CAMERA_LIB_CONTRAST,
93566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          &contrast,
93666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          NULL);
93766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
93866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
93966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
94066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - decrease_contrast -
94166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
94266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
94366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
94466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_contrast (mm_camera_lib_handle *lib_handle) {
94566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        contrast -= CAMERA_CONTRAST_STEP;
94666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (contrast < CAMERA_MIN_CONTRAST) {
94766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                contrast = CAMERA_MIN_CONTRAST;
94866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                printf("Reached min CONTRAST. \n");
94966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
95066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("Decrease Contrast to %d\n", contrast);
95166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return mm_camera_lib_send_command(lib_handle,
95266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          MM_CAMERA_LIB_CONTRAST,
95366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          &contrast,
95466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          NULL);
95566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
95666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
95766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
95866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - decrease_brightness -
95966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
96066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
96166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
96266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_brightness (mm_camera_lib_handle *lib_handle) {
96366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        brightness -= CAMERA_BRIGHTNESS_STEP;
96466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (brightness < CAMERA_MIN_BRIGHTNESS) {
96566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                brightness = CAMERA_MIN_BRIGHTNESS;
96666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                printf("Reached min BRIGHTNESS. \n");
96766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
96866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("Decrease Brightness to %d\n", brightness);
96966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return mm_camera_lib_send_command(lib_handle,
97066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          MM_CAMERA_LIB_BRIGHTNESS,
97166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          &brightness,
97266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          NULL);
97366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
97466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
97566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
97666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - increase_brightness -
97766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
97866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
97966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
98066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_brightness (mm_camera_lib_handle *lib_handle) {
98166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        brightness += CAMERA_BRIGHTNESS_STEP;
98266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (brightness > CAMERA_MAX_BRIGHTNESS) {
98366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                brightness = CAMERA_MAX_BRIGHTNESS;
98466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                printf("Reached max BRIGHTNESS. \n");
98566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
98666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("Increase Brightness to %d\n", brightness);
98766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return mm_camera_lib_send_command(lib_handle,
98866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          MM_CAMERA_LIB_BRIGHTNESS,
98966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          &brightness,
99066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          NULL);
99166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
99266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
99366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
99466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - increase_EV -
99566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
99666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
99766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
99866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
99966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_EV (void) {
100066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0
100166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   int rc = 0;
100266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   int32_t value = 0;
100366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   rc = cam_config_is_parm_supported(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION);
100466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if(!rc) {
100566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       printf("MM_CAMERA_PARM_EXPOSURE_COMPENSATION mode is not supported for this sensor");
100666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       return -1;
100766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
100866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    ev_numerator += 1;
100966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if(ev_numerator >= EXPOSURE_COMPENSATION_MINIMUM_NUMERATOR &&
101066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            ev_numerator <= EXPOSURE_COMPENSATION_MAXIMUM_NUMERATOR){
101166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        int16_t  numerator16 = (int16_t)(ev_numerator & 0x0000ffff);
101266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        uint16_t denominator16 = EXPOSURE_COMPENSATION_DENOMINATOR;
101366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        value = numerator16 << 16 | denominator16;
101466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else {
101566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       printf("Reached max EV.\n");
101666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
101766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION, value);
101866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
101966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return 0;
102066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
102166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
102266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
102366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - decrease_EV -
102466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
102566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
102666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
102766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_EV (void) {
102866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0
102966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   int rc = 0;
103066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   int32_t  value = 0;
103166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   rc = cam_config_is_parm_supported(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION);
103266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if(!rc) {
103366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       printf("MM_CAMERA_PARM_EXPOSURE_COMPENSATION mode is not supported for this sensor");
103466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       return -1;
103566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
103666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    ev_numerator -= 1;
103766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if(ev_numerator >= EXPOSURE_COMPENSATION_MINIMUM_NUMERATOR &&
103866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            ev_numerator <= EXPOSURE_COMPENSATION_MAXIMUM_NUMERATOR){
103966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        int16_t  numerator16 = (int16_t)(ev_numerator & 0x0000ffff);
104066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        uint16_t denominator16 = EXPOSURE_COMPENSATION_DENOMINATOR;
104166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        value = numerator16 << 16 | denominator16;
104266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else {
104366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       printf("Reached min EV.\n");
104466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
104566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_EXPOSURE_COMPENSATION, value);
104666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
104766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return 0;
104866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
104966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
105066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
105166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - increase_saturation -
105266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
105366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
105466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
105566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_saturation (mm_camera_lib_handle *lib_handle) {
105666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0
105766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  saturation += CAMERA_SATURATION_STEP;
105866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  if (saturation > CAMERA_MAX_SATURATION) {
105966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    saturation = CAMERA_MAX_SATURATION;
106066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("Reached max saturation. \n");
106166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
106266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("Increase Saturation to %d\n", saturation);
106366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_SATURATION, saturation);
106466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
106566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  saturation += CAMERA_SATURATION_STEP;
106666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  if (saturation > CAMERA_MAX_SATURATION) {
106766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    saturation = CAMERA_MAX_SATURATION;
106866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("Reached max saturation. \n");
106966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
107066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("Increase saturation to %d\n", contrast);
107166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return mm_camera_lib_send_command(lib_handle,
107266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                       MM_CAMERA_LIB_SATURATION,
107366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                       &saturation,
107466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                       NULL);
107566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
107666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
107766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
107866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - decrease_saturation -
107966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
108066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
108166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
108266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_saturation (mm_camera_lib_handle *lib_handle) {
108366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0
108466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  saturation -= CAMERA_SATURATION_STEP;
108566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  if (saturation < CAMERA_MIN_SATURATION) {
108666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    saturation = CAMERA_MIN_SATURATION;
108766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("Reached min saturation. \n");
108866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
108966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("Dcrease Saturation to %d\n", saturation);
109066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_SATURATION, saturation);
109166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
109266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  saturation -= CAMERA_SATURATION_STEP;
109366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  if (saturation < CAMERA_MIN_SATURATION) {
109466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    saturation = CAMERA_MIN_SATURATION;
109566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("Reached min saturation. \n");
109666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
109766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  printf("decrease saturation to %d\n", contrast);
109866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return mm_camera_lib_send_command(lib_handle,
109966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                       MM_CAMERA_LIB_SATURATION,
110066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                       &saturation,
110166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                       NULL);
110266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
110366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
110466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
110566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint take_jpeg_snapshot(mm_camera_test_obj_t *test_obj, int is_burst_mode)
110666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
110766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  LOGH("\nEnter take_jpeg_snapshot!!\n");
110866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  int rc = mm_app_take_picture (test_obj, (uint8_t)is_burst_mode);
110966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  if (MM_CAMERA_OK != rc) {
111066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    LOGE(" mm_app_take_picture() err=%d\n",  rc);
111166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
111266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return rc;
111366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
111466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
111566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
111666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION    - main -
111766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
111866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
111966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *==========================================================================*/
112066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint main()
112166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
112266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char tc_buf[3];
112366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int mode = 0;
112466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int rc = 0;
112566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
112666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("Please Select Execution Mode:\n");
112766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("0: Menu Based 1: Regression\n");
112866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    fgets(tc_buf, 3, stdin);
112966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    mode = tc_buf[0] - '0';
113066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if(mode == 0) {
113166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      printf("\nStarting Menu based!!\n");
113266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else if(mode == 1) {
113366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      printf("Starting Regression testing!!\n");
113466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      if(!mm_app_start_regression_test(1)) {
113566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin         printf("\nRegressiion test passed!!\n");
113666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin         return 0;
113766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      } else {
113866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("\nRegression test failed!!\n");
113966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        exit(-1);
114066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      }
114166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else {
114266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       printf("\nPlease Enter 0 or 1\n");
114366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       printf("\nExisting the App!!\n");
114466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       exit(-1);
114566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
114666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
114766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
114866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    rc = submain();
114966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
115066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("Exiting application\n");
115166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
115266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return rc;
115366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
115466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
115566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
115666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - set_whitebalance -
115766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
115866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
115966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
116066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_whitebalance (mm_camera_lib_handle *lib_handle, int wb_action_param) {
116166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_wb_mode_type type = 0;
116266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        switch (wb_action_param) {
116366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case WB_AUTO:
116466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n WB_AUTO\n");
116566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_WB_MODE_AUTO;
116666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
116766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case WB_INCANDESCENT:
116866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n WB_INCANDESCENT\n");
116966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_WB_MODE_INCANDESCENT;
117066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
117166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case WB_FLUORESCENT:
117266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n WB_FLUORESCENT\n");
117366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_WB_MODE_FLUORESCENT;
117466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
117566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case WB_WARM_FLUORESCENT:
117666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n WB_WARM_FLUORESCENT\n");
117766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_WB_MODE_WARM_FLUORESCENT;
117866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
117966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case WB_DAYLIGHT:
118066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n WB_DAYLIGHT\n");
118166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_WB_MODE_DAYLIGHT;
118266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
118366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case WB_CLOUDY_DAYLIGHT:
118466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n WB_CLOUDY_DAYLIGHT\n");
118566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_WB_MODE_CLOUDY_DAYLIGHT;
118666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
118766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin               case WB_TWILIGHT:
118866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n WB_TWILIGHT\n");
118966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_WB_MODE_TWILIGHT;
119066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
119166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin               case WB_SHADE:
119266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n WB_SHADE\n");
119366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_WB_MODE_SHADE;
119466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
119566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                default:
119666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
119766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
119866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return mm_camera_lib_send_command(lib_handle,
119966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          MM_CAMERA_LIB_WB,
120066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          &type,
120166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          NULL);
120266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
120366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
120466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
120566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
120666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - set_exp_metering -
120766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
120866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
120966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
121066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_exp_metering (mm_camera_lib_handle *lib_handle, int exp_metering_action_param) {
121166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_auto_exposure_mode_type type = 0;
121266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        switch (exp_metering_action_param) {
121366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin		case AUTO_EXP_FRAME_AVG:
121466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\nAUTO_EXP_FRAME_AVG\n");
121566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_AEC_MODE_FRAME_AVERAGE;
121666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
121766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case AUTO_EXP_CENTER_WEIGHTED:
121866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n AUTO_EXP_CENTER_WEIGHTED\n");
121966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_AEC_MODE_CENTER_WEIGHTED;
122066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
122166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case AUTO_EXP_SPOT_METERING:
122266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n AUTO_EXP_SPOT_METERING\n");
122366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_AEC_MODE_SPOT_METERING;
122466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
122566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case AUTO_EXP_SMART_METERING:
122666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n AUTO_EXP_SMART_METERING\n");
122766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_AEC_MODE_SMART_METERING;
122866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
122966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case AUTO_EXP_USER_METERING:
123066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n AUTO_EXP_USER_METERING\n");
123166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_AEC_MODE_USER_METERING;
123266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
123366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case AUTO_EXP_SPOT_METERING_ADV:
123466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n AUTO_EXP_SPOT_METERING_ADV\n");
123566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_AEC_MODE_SPOT_METERING_ADV;
123666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
123766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                case AUTO_EXP_CENTER_WEIGHTED_ADV:
123866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        printf("\n AUTO_EXP_CENTER_WEIGHTED_ADV\n");
123966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        type = CAM_AEC_MODE_CENTER_WEIGHTED_ADV;
124066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
124166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                default:
124266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                        break;
124366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
124466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return mm_camera_lib_send_command(lib_handle,
124566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          MM_CAMERA_LIB_EXPOSURE_METERING,
124666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          &type,
124766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          NULL);
124866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
124966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
125066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint get_ctrl_value (int ctrl_value_mode_param){
125166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0
125266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int rc = 0;
125366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    struct v4l2_control ctrl;
125466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
125566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if (ctrl_value_mode_param == WHITE_BALANCE_STATE) {
125666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("You chose WHITE_BALANCE_STATE\n");
125766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        ctrl.id = V4L2_CID_AUTO_WHITE_BALANCE;
125866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
125966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    else if (ctrl_value_mode_param == WHITE_BALANCE_TEMPERATURE) {
126066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("You chose WHITE_BALANCE_TEMPERATURE\n");
126166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        ctrl.id = V4L2_CID_WHITE_BALANCE_TEMPERATURE;
126266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
126366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    else if (ctrl_value_mode_param == BRIGHTNESS_CTRL) {
126466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("You chose brightness value\n");
126566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        ctrl.id = V4L2_CID_BRIGHTNESS;
126666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
126766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    else if (ctrl_value_mode_param == EV) {
126866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("You chose exposure value\n");
126966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        ctrl.id = V4L2_CID_EXPOSURE;
127066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
127166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    else if (ctrl_value_mode_param == CONTRAST_CTRL) {
127266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("You chose contrast value\n");
127366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        ctrl.id = V4L2_CID_CONTRAST;
127466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
127566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    else if (ctrl_value_mode_param == SATURATION_CTRL) {
127666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("You chose saturation value\n");
127766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        ctrl.id = V4L2_CID_SATURATION;
127866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else if (ctrl_value_mode_param == SHARPNESS_CTRL) {
127966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("You chose sharpness value\n");
128066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        ctrl.id = V4L2_CID_SHARPNESS;
128166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
128266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
128366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  //  rc = ioctl(camfd, VIDIOC_G_CTRL, &ctrl);
128466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return rc;
128566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
128666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return ctrl_value_mode_param;
128766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
128866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
128966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
129066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - toggle_afr -
129166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
129266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
129366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
129466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint toggle_afr () {
129566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0
129666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if (fps_mode == FPS_MODE_AUTO) {
129766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("\nSetting FPS_MODE_FIXED\n");
129866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        fps_mode = FPS_MODE_FIXED;
129966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else {
130066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("\nSetting FPS_MODE_AUTO\n");
130166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        fps_mode = FPS_MODE_AUTO;
130266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
130366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return mm_app_set_config_parm(cam_id, MM_CAMERA_PARM_FPS_MODE, fps_mode);
130466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
130566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return 0;
130666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
130766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
130866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_zoom (mm_camera_lib_handle *lib_handle, int zoom_action_param) {
130966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
131066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if (zoom_action_param == ZOOM_IN) {
131166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        zoom_level += ZOOM_STEP;
131266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (zoom_level > zoom_max_value)
131366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            zoom_level = zoom_max_value;
131466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else if (zoom_action_param == ZOOM_OUT) {
131566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        zoom_level -= ZOOM_STEP;
131666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (zoom_level < ZOOM_MIN_VALUE)
131766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            zoom_level = ZOOM_MIN_VALUE;
131866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else {
131966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        LOGD(" Invalid zoom_action_param value\n");
132066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return -EINVAL;
132166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
132266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return mm_camera_lib_send_command(lib_handle,
132366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      MM_CAMERA_LIB_ZOOM,
132466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      &zoom_level,
132566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      NULL);
132666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
132766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
132866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
132966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - set_iso -
133066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
133166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
133266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
133366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_iso (mm_camera_lib_handle *lib_handle, int iso_action_param) {
133466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_iso_mode_type type = 0;
133566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    switch (iso_action_param) {
133666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ISO_AUTO:
133766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n ISO_AUTO\n");
133866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_ISO_MODE_AUTO;
133966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
134066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ISO_DEBLUR:
134166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n ISO_DEBLUR\n");
134266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_ISO_MODE_DEBLUR;
134366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
134466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ISO_100:
134566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n ISO_100\n");
134666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_ISO_MODE_100;
134766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
134866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ISO_200:
134966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n ISO_200\n");
135066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_ISO_MODE_200;
135166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
135266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ISO_400:
135366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n ISO_400\n");
135466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_ISO_MODE_400;
135566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
135666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ISO_800:
135766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n ISO_800\n");
135866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_ISO_MODE_800;
135966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
136066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ISO_1600:
136166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n ISO_1600\n");
136266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_ISO_MODE_1600;
136366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
136466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
136566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
136666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
136766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return mm_camera_lib_send_command(lib_handle,
136866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      MM_CAMERA_LIB_ISO,
136966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      &type,
137066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      NULL);
137166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
137266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
137366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
137466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - increase_sharpness -
137566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
137666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
137766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
137866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint increase_sharpness (mm_camera_lib_handle *lib_handle) {
137966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    sharpness += CAMERA_SHARPNESS_STEP;
138066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if (sharpness > CAMERA_MAX_SHARPNESS) {
138166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        sharpness = CAMERA_MAX_SHARPNESS;
138266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("Reached max SHARPNESS. \n");
138366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
138466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("Increase Sharpness to %d\n", sharpness);
138566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return mm_camera_lib_send_command(lib_handle,
138666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      MM_CAMERA_LIB_SHARPNESS,
138766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      &sharpness,
138866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      NULL);
138966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
139066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
139166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
139266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - decrease_sharpness -
139366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
139466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
139566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
139666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint decrease_sharpness (mm_camera_lib_handle *lib_handle) {
139766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    sharpness -= CAMERA_SHARPNESS_STEP;
139866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if (sharpness < CAMERA_MIN_SHARPNESS) {
139966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        sharpness = CAMERA_MIN_SHARPNESS;
140066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("Reached min SHARPNESS. \n");
140166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
140266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    printf("Decrease Sharpness to %d\n", sharpness);
140366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return mm_camera_lib_send_command(lib_handle,
140466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      MM_CAMERA_LIB_SHARPNESS,
140566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      &sharpness,
140666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      NULL);
140766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
140866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
140966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_flash_mode (mm_camera_lib_handle *lib_handle, int action_param) {
141066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_flash_mode_t type = 0;
141166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    switch (action_param) {
141266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case FLASH_MODE_OFF:
141366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n FLASH_MODE_OFF\n");
141466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_FLASH_MODE_OFF;
141566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
141666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case FLASH_MODE_AUTO:
141766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n FLASH_MODE_AUTO\n");
141866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_FLASH_MODE_AUTO;
141966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
142066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case FLASH_MODE_ON:
142166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n FLASH_MODE_ON\n");
142266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_FLASH_MODE_ON;
142366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
142466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case FLASH_MODE_TORCH:
142566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n FLASH_MODE_TORCH\n");
14261687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan            type = CAM_FLASH_MODE_TORCH;
142766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
142866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
142966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
143066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
143166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return mm_camera_lib_send_command(lib_handle,
143266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      MM_CAMERA_LIB_FLASH,
143366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      &type,
143466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                      NULL);
143566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
143666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
143766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint set_bestshot_mode(mm_camera_lib_handle *lib_handle, int action_param) {
143866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_scene_mode_type type = 0;
143966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    switch (action_param) {
144066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       case BESTSHOT_AUTO:
144166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT AUTO\n");
144266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_OFF;
144366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
144466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_ACTION:
144566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT ACTION\n");
144666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_ACTION;
144766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
144866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_PORTRAIT:
144966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT PORTRAIT\n");
145066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_PORTRAIT;
145166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
145266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_LANDSCAPE:
145366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT LANDSCAPE\n");
145466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_LANDSCAPE;
145566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
145666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_NIGHT:
145766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT NIGHT\n");
145866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_NIGHT;
145966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
146066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_NIGHT_PORTRAIT:
146166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT NIGHT PORTRAIT\n");
146266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_NIGHT_PORTRAIT;
146366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
146466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_THEATRE:
146566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT THREATRE\n");
146666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_THEATRE;
146766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
146866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_BEACH:
146966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT BEACH\n");
147066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_BEACH;
147166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
147266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_SNOW:
147366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT SNOW\n");
147466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_SNOW;
147566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
147666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_SUNSET:
147766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT SUNSET\n");
147866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_SUNSET;
147966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
148066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_ANTISHAKE:
148166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT ANTISHAKE\n");
148266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_ANTISHAKE;
148366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
148466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_FIREWORKS:
148566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT FIREWORKS\n");
148666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_FIREWORKS;
148766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
148866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_SPORTS:
148966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT SPORTS\n");
149066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_SPORTS;
149166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
149266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_PARTY:
149366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT PARTY\n");
149466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_PARTY;
149566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
149666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_CANDLELIGHT:
149766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT CANDLELIGHT\n");
149866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_CANDLELIGHT;
149966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
150066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_ASD:
150166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT ASD\n");
150266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_AUTO;
150366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
150466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_BACKLIGHT:
150566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT BACKLIGHT\n");
150666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_BACKLIGHT;
150766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
150866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_FLOWERS:
150966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT FLOWERS\n");
151066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_FLOWERS;
151166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
151266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_AR:
151366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT AR\n");
151466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_AR;
151566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
151666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case BESTSHOT_HDR:
151766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n BEST SHOT HDR\n");
151866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            type = CAM_SCENE_MODE_OFF;
151966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
152066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
152166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
152266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
152366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return mm_camera_lib_send_command(lib_handle,
152466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          MM_CAMERA_LIB_BESTSHOT,
152566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          &type,
152666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          NULL);
152766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
152866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
152966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - print_current_menu -
153066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
153166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
153266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
153366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint print_current_menu (menu_id_change_t current_menu_id) {
153466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  if (current_menu_id == MENU_ID_MAIN) {
153566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    print_menu_preview_video ();
153666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_WHITEBALANCECHANGE) {
153766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_preview_video_wb_change_tbl();
153866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_EXPMETERINGCHANGE) {
153966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_preview_video_exp_metering_change_tbl();
154066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_GET_CTRL_VALUE) {
154166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_preview_video_get_ctrl_value_tbl();
154266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_ISOCHANGE) {
154366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_preview_video_iso_change_tbl();
154466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_BRIGHTNESSCHANGE) {
154566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_brightness_change_tbl ();
154666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_CONTRASTCHANGE) {
154766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_contrast_change_tbl ();
154866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_EVCHANGE) {
154966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_EV_change_tbl ();
155066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_SATURATIONCHANGE) {
155166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_saturation_change_tbl ();
155266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_ZOOMCHANGE) {
155366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_preview_video_zoom_change_tbl();
155466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_SHARPNESSCHANGE) {
155566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_preview_video_sharpness_change_tbl();
155666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_BESTSHOT) {
155766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_set_bestshot_tbl();
155866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_FLASHMODE) {
155966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_set_flashmode_tbl();
156066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_SENSORS ) {
156166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_sensors_tbl();
156266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } else if (current_menu_id == MENU_ID_SWITCH_RES ) {
156366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_resolution_change_tbl();
156466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  }
156566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
156666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  return 0;
156766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
156866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
156966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint filter_resolutions(mm_camera_lib_handle *lib_handle,
157066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                       DIMENSION_TBL_T *tbl,
157166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                       size_t tbl_size)
157266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
157366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t i, j;
157466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_capability_t camera_cap;
157566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int rc = 0;
157666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
157766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if ( ( NULL == lib_handle ) || ( NULL == tbl ) ) {
157866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return -1;
157966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
158066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
158166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    rc = mm_camera_lib_get_caps(lib_handle, &camera_cap);
158266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if ( MM_CAMERA_OK != rc ) {
158366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        LOGE("mm_camera_lib_get_caps() err=%d\n",  rc);
158466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return -1;
158566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
158666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
158766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    for( i = 0 ; i < tbl_size ; i++ ) {
158866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        for( j = 0; j < camera_cap.picture_sizes_tbl_cnt; j++ ) {
158966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            if ( ( tbl[i].width == camera_cap.picture_sizes_tbl[j].width ) &&
159066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                 ( tbl[i].height == camera_cap.picture_sizes_tbl[j].height ) ) {
159166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                tbl[i].supported = 1;
159266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = (int)i;
159366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
159466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            }
159566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
159666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
159766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
159866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return rc;
159966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
160066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
160166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
160266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION   : enableAFR
160366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
160466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION: This function will go through the list
160566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *              of supported FPS ranges and select the
160666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *              one which has maximum range
160766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
160866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * PARAMETERS :
160966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *   @lib_handle   : camera test library handle
161066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
161166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * RETURN     : uint32_t type of stream handle
161266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *              MM_CAMERA_OK  -- Success
161366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *              !=MM_CAMERA_OK -- Error status
161466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *==========================================================================*/
161566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinint enableAFR(mm_camera_lib_handle *lib_handle)
161666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
161766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t i, j;
161866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float max_range = 0.0f;
161966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_capability_t cap;
162066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int rc = MM_CAMERA_OK;
162166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
162266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if ( NULL == lib_handle ) {
162366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return MM_CAMERA_E_INVALID_INPUT;
162466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
162566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
162666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    rc = mm_camera_lib_get_caps(lib_handle, &cap);
162766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if ( MM_CAMERA_OK != rc ) {
162866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        LOGE("mm_camera_lib_get_caps() err=%d\n",  rc);
162966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return rc;
163066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
163166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
163266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    for( i = 0, j = 0 ; i < cap.fps_ranges_tbl_cnt ; i++ ) {
163366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if ( max_range < (cap.fps_ranges_tbl[i].max_fps - cap.fps_ranges_tbl[i].min_fps) ) {
163466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            j = i;
163566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
163666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
163766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
163866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    rc = mm_camera_lib_send_command(lib_handle,
163966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                    MM_CAMERA_LIB_FPS_RANGE,
164066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                    &cap.fps_ranges_tbl[j],
164166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                    NULL);
164266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
164366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    LOGE("FPS range [%5.2f:%5.2f] rc = %d",
164466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin              cap.fps_ranges_tbl[j].min_fps,
164566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin              cap.fps_ranges_tbl[j].max_fps,
164666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin              rc);
164766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
164866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return rc;
164966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
165066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
165166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*===========================================================================
165266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * FUNCTION     - submain -
165366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
165466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * DESCRIPTION:
165566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ===========================================================================*/
165666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinstatic int submain()
165766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
165866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int rc = 0;
165966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char tc_buf[3];
166066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    menu_id_change_t current_menu_id = MENU_ID_MAIN, next_menu_id;
166166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    camera_action_t action_id;
166266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int action_param;
166366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t previewing = 0;
166466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int isZSL = 0;
166566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t wnr_enabled = 0;
166666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    mm_camera_lib_handle lib_handle;
166766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int num_cameras;
166866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int available_sensors =
166966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        (int)(sizeof(sensor_tbl) / sizeof(sensor_tbl[0]));
167066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int available_snap_sizes =
167166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        (int)(sizeof(dimension_tbl)/sizeof(dimension_tbl[0]));
167266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int i,c;
167366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    mm_camera_lib_snapshot_params snap_dim;
167466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    snap_dim.width = DEFAULT_SNAPSHOT_WIDTH;
167566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    snap_dim.height = DEFAULT_SNAPSHOT_HEIGHT;
167666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_scene_mode_type default_scene= CAM_SCENE_MODE_OFF;
167766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int set_tintless= 0;
167866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
167966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    mm_camera_test_obj_t test_obj;
168066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    memset(&test_obj, 0, sizeof(mm_camera_test_obj_t));
168166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
168266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    rc = mm_camera_lib_open(&lib_handle, 0);
168366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if (rc != MM_CAMERA_OK) {
168466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        LOGE("mm_camera_lib_open() err=%d\n",  rc);
168566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        return -1;
168666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
168766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
168866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    num_cameras = mm_camera_lib_number_of_cameras(&lib_handle);
168966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    if ( 0 >= num_cameras ) {
169066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        LOGE(" No camera sensors reported!");
169166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        rc = -1;
169266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        goto ERROR;
169366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else if ( 1 <= num_cameras ) {
169466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        c = MIN(num_cameras, available_sensors);
169566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        for ( i = 0 ; i < c ; i++ ) {
169666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            sensor_tbl[i].present = 1;
169766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
169866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        current_menu_id = MENU_ID_SENSORS;
169966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } else {
170066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        i = filter_resolutions(&lib_handle,
170166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                dimension_tbl,
170266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                (size_t)available_snap_sizes);
170366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if ( ( i < 0 ) || ( i >= available_snap_sizes ) ) {
170466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            LOGE("filter_resolutions()\n");
170566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            goto ERROR;
170666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
170766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        snap_dim.width = dimension_tbl[i].width;
170866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        snap_dim.height = dimension_tbl[i].height;
170966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
171066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        rc = enableAFR(&lib_handle);
171166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (rc != MM_CAMERA_OK) {
171266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            LOGE("enableAFR() err=%d\n",  rc);
171366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            goto ERROR;
171466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
171566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
171666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        rc =  mm_camera_lib_send_command(&lib_handle,
171766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                         MM_CAMERA_LIB_BESTSHOT,
171866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                         &default_scene,
171966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                         NULL);
172066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (rc != MM_CAMERA_OK) {
172166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            LOGE("mm_camera_lib_send_command() err=%d\n",  rc);
172266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            goto ERROR;
172366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
172466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
172566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*start the eztune server*/
172666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    LOGH("Starting eztune Server \n");
172766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    eztune_server_start(&lib_handle);
172866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
172966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    do {
173066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        print_current_menu (current_menu_id);
173166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        fgets(tc_buf, 3, stdin);
173266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
173366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        next_menu_id = next_menu(current_menu_id, tc_buf[0], & action_id, & action_param);
173466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
173566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (next_menu_id != MENU_ID_INVALID) {
173666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          current_menu_id = next_menu_id;
173766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
173866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (action_id == ACTION_NO_ACTION) {
173966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          continue;
174066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
174166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
174266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        switch(action_id) {
174366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_START_PREVIEW:
174466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGE("ACTION_START_PREVIEW \n");
174566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = mm_camera_lib_start_stream(&lib_handle);
174666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
174766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_start_stream() err=%d\n",  rc);
174866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
174966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
175066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                previewing = 1;
175166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
175266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
175366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_STOP_PREVIEW:
175466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("ACTION_STOP_PREVIEW \n");
175566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = mm_camera_lib_stop_stream(&lib_handle);
175666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
175766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_stop_stream() err=%d\n",  rc);
175866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
175966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
176066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                previewing = 0;
176166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
176266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
176366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SET_WHITE_BALANCE:
176466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the White Balance changes\n");
176566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                set_whitebalance(&lib_handle, action_param);
176666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
176766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
176866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SET_TINTLESS_ENABLE:
176966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the Tintless enable changes\n");
177066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                set_tintless = 1;
177166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc =  mm_camera_lib_send_command(&lib_handle,
177266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                 MM_CAMERA_LIB_SET_TINTLESS,
177366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                 &set_tintless,
177466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                 NULL);
177566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
177666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_send_command() err=%d\n",  rc);
177766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
177866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
177966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
178066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
178166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SET_TINTLESS_DISABLE:
178266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the Tintless disable changes\n");
178366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                set_tintless = 0;
178466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc =  mm_camera_lib_send_command(&lib_handle,
178566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                 MM_CAMERA_LIB_SET_TINTLESS,
178666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                 &set_tintless,
178766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                 NULL);
178866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
178966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_send_command() err=%d\n",  rc);
179066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
179166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
179266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
179366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
179466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SET_EXP_METERING:
179566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the Exposure Metering changes\n");
179666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                set_exp_metering(&lib_handle, action_param);
179766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
179866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
179966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_GET_CTRL_VALUE:
180066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for getting control value\n");
180166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                get_ctrl_value(action_param);
180266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
180366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
180466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_BRIGHTNESS_INCREASE:
180566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                printf("Increase brightness\n");
180666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                increase_brightness(&lib_handle);
180766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
180866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
180966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_BRIGHTNESS_DECREASE:
181066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                printf("Decrease brightness\n");
181166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                decrease_brightness(&lib_handle);
181266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
181366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
181466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_CONTRAST_INCREASE:
181566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the contrast increase\n");
181666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                increase_contrast (&lib_handle);
181766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
181866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
181966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_CONTRAST_DECREASE:
182066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the contrast decrease\n");
182166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                decrease_contrast (&lib_handle);
182266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
182366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
182466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_EV_INCREASE:
182566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the EV increase\n");
182666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                increase_EV ();
182766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
182866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
182966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_EV_DECREASE:
183066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the EV decrease\n");
183166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                decrease_EV ();
183266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
183366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
183466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SATURATION_INCREASE:
183566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the EV increase\n");
183666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                increase_saturation (&lib_handle);
183766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
183866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
183966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SATURATION_DECREASE:
184066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the EV decrease\n");
184166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                decrease_saturation (&lib_handle);
184266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
184366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
184466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_TOGGLE_AFR:
184566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Select for auto frame rate toggling\n");
184666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                toggle_afr();
184766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
184866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
184966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SET_ISO:
185066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Select for ISO changes\n");
185166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                set_iso(&lib_handle, action_param);
185266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
185366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
185466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SET_ZOOM:
185566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for the zoom direction changes\n");
185666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                set_zoom(&lib_handle, action_param);
185766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
185866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
185966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SHARPNESS_INCREASE:
186066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for sharpness increase\n");
186166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                increase_sharpness(&lib_handle);
186266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
186366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
186466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SHARPNESS_DECREASE:
186566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for sharpness decrease\n");
186666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                decrease_sharpness(&lib_handle);
186766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
186866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
186966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SET_BESTSHOT_MODE:
187066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGD("Selection for bestshot\n");
187166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                set_bestshot_mode(&lib_handle, action_param);
187266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
187366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
187466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SET_FLASH_MODE:
187566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                printf("\n Selection for flashmode\n");
187666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                set_flash_mode(&lib_handle, action_param);
187766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
187866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
187966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SWITCH_CAMERA:
188066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = mm_camera_lib_close(&lib_handle);
188166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
188266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_close() err=%d\n",  rc);
188366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
188466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
188566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
188666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = mm_camera_lib_open(&lib_handle, action_param);
188766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
188866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_open() err=%d\n",  rc);
188966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
189066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
189166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
189266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                i = filter_resolutions(&lib_handle,
189366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                        dimension_tbl,
189466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                        sizeof(dimension_tbl)/sizeof(dimension_tbl[0]));
189566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if ( ( i < 0 ) || ( i >=  available_snap_sizes ) ) {
189666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("filter_resolutions()\n");
189766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
189866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
189966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                snap_dim.width = dimension_tbl[i].width;
190066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                snap_dim.height = dimension_tbl[i].height;
190166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
190266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = enableAFR(&lib_handle);
190366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
190466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("enableAFR() err=%d\n",  rc);
190566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
190666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
190766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
190866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc =  mm_camera_lib_send_command(&lib_handle,
190966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                 MM_CAMERA_LIB_BESTSHOT,
191066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                 &default_scene,
191166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                 NULL);
191266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
191366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_send_command() err=%d\n",  rc);
191466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
191566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
191666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
191766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
191866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_TOGGLE_ZSL:
191966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                printf("ZSL Toggle !!!\n");
192066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                isZSL = !isZSL;
192166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if ( isZSL ) {
192266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    printf("ZSL on !!!\n");
192366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                } else {
192466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    printf("ZSL off !!!\n");
192566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
192666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = mm_camera_lib_send_command(&lib_handle,
192766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                MM_CAMERA_LIB_ZSL_ENABLE,
192866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                &isZSL,
192966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                NULL);
193066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
193166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_send_command() err=%d\n",  rc);
193266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
193366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
193466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
193566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
193666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_TAKE_RAW_SNAPSHOT:
193766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGH("\n Take RAW snapshot\n");
193866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
193966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = mm_camera_lib_send_command(&lib_handle,
194066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                MM_CAMERA_LIB_DO_AF,
194166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                NULL,
194266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                NULL);
194366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
194466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
194566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_send_command() err=%d\n",  rc);
194666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
194766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
194866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
194966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = mm_camera_lib_send_command(&lib_handle,
195066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                MM_CAMERA_LIB_RAW_CAPTURE,
195166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                NULL,
195266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                NULL);
195366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
195466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_send_command() err=%d\n",  rc);
195566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
195666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
195766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
195866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
195966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_TAKE_JPEG_SNAPSHOT:
196066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                LOGH("\n Take JPEG snapshot\n");
196166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
196266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                rc = mm_camera_lib_send_command(&lib_handle,
196366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                MM_CAMERA_LIB_JPEG_CAPTURE,
196466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                &snap_dim,
196566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                NULL);
196666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                if (rc != MM_CAMERA_OK) {
196766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    LOGE("mm_camera_lib_send_command() err=%d\n",  rc);
196866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                    goto ERROR;
196966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                }
197066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
197166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            case ACTION_SWITCH_RESOLUTION:
197266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                printf("\n Switch snapshot resolution to %dx%d\n",
197366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                       dimension_tbl[action_param].width,
197466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                       dimension_tbl[action_param].height);
197566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                snap_dim.width = dimension_tbl[action_param].width;
197666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                snap_dim.height = dimension_tbl[action_param].height;
197766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                break;
197866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
197966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      case ACTION_START_RECORDING:
198066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        LOGD("Start recording action\n");
198166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0
198266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if (mm_app_start_video(cam_id) < 0)
198366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          goto ERROR;
198466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        is_rec = 1;
198566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
198666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        break;
198766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      case ACTION_STOP_RECORDING:
198866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        LOGD("Stop recording action\n");
198966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0
199066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if(is_rec) {
199166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          if (mm_app_stop_video(cam_id) < 0)
199266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            goto ERROR;
199366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          is_rec = 0;
199466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        }
199566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
199666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        break;
199766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      case ACTION_TAKE_LIVE_SNAPSHOT:
199866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        printf("Selection for live shot\n");
199966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#if 0
200066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        if(is_rec)
200166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin           mm_app_take_live_snapshot(cam_id);
200266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        else
200366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin           printf("\n !!! Use live snapshot option while recording only !!!\n");
200466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif
200566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        break;
200666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
200766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ACTION_TOGGLE_WNR:
200866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          wnr_enabled = !wnr_enabled;
200966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          printf("WNR Enabled = %d\n", wnr_enabled);
201066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          rc = mm_camera_lib_send_command(&lib_handle,
201166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          MM_CAMERA_LIB_WNR_ENABLE,
201266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          &wnr_enabled,
201366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                          NULL);
201466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          if (rc != MM_CAMERA_OK) {
201566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin              LOGE("mm_camera_lib_send_command() err=%d\n",  rc);
201666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin              goto ERROR;
201766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          }
201866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin          break;
201966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
202066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ACTION_EXIT:
202166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("Exiting....\n");
202266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
202366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        case ACTION_NO_ACTION:
202466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("Go back to main menu");
202566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
202666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
202766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        default:
202866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            printf("\n\n!!!!!WRONG INPUT: %d!!!!\n", action_id);
202966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin            break;
203066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    }
203166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
203266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    usleep(1000 * 1000);
203366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    LOGD("action_id = %d\n", action_id);
203466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
203566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } while (action_id != ACTION_EXIT);
203666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  action_id = ACTION_NO_ACTION;
203766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
203866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    mm_camera_lib_close(&lib_handle);
203966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return 0;
204066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
204166f9976540f830b0090ff2ca557b0364a53f2008Patrick TjinERROR:
204266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
204366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    mm_camera_lib_close(&lib_handle);
204466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
204566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    return rc;
204666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}
204766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
2048