/*
 * Copyright (C) 2016-2017 Intel Corporation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef _CHROME_CAMERA_LOG_H_
#define _CHROME_CAMERA_LOG_H_

#define ENV_CAMERA_HAL_DEBUG  "cameraDebug"
#define ENV_CAMERA_CCA_DEBUG  "cameraCca"
#define ENV_CAMERA_HAL_PERF   "cameraPerf"
#define ENV_CAMERA_HAL_DUMP   "cameraDump"
#define ENV_CAMERA_HAL_DVS    "cameraDvs"
#define ENV_CAMERA_HAL_GUI_TRACE  "cameraGuiTrace"
#define ENV_CAMERA_HAL_HW_WEAVING "cameraHwWeavingEnabled"

// Properties for debugging.
#define ENV_CAMERA_HAL_DUMP_SKIP_NUM  "cameraDumpSkipNum"
#define ENV_CAMERA_HAL_DUMP_INTERVAL  "cameraDumpInterval"
#define ENV_CAMERA_HAL_DUMP_COUNT     "cameraDumpCount"
#define ENV_CAMERA_HAL_DUMP_PATH      "cameraDumpPath"
#define ENV_CAMERA_CSS_DEBUG          "cameraCSSDebug"
#define ENV_CAMERA_CSS_DUMP_PATH      "cameraCSSDumpPath"

// Dump stats grid
#define ENV_CAMERA_RGBS_GRID_DUMP "rgbsGridDump"
#define ENV_CAMERA_AF_GRID_DUMP "afGridDump"

#endif // _CHROME_CAMERA_LOG_H_
