/*
 * camera_config.h — 热成像摄像头参数配置接口
 *
 * 基于 HCUsbSDK 封装,提供热成像设备的全部配置项。
 * 所有配置操作通过 USB 通道 1(官方 Hikvision demo 约定)发送。
 * 返回 1 成功 / 0 失败(失败时自动打印错误码)。
 *
 * 字段访问器采用 读-改-写 模式:先 GET 整个结构体,修改单个字段,再 SET 回设备。
 * 命名约定:camera_{get/set}_{参数名},无特殊声明时走通道 1、无额外数据。
 */

#ifndef CAMERA_CONFIG_H
#define CAMERA_CONFIG_H

#include "HCUsbSDK.h"

#ifdef __cplusplus
extern "C" {
#endif

/* ======================================================================== *
 *  1.  系统管理                                                             *
 * ======================================================================== */

int camera_get_device_info(LONG uid, USB_SYSTEM_DEVICE_INFO *info);
/*  读取设备信息(固件版本、硬件版本、设备型号、序列号等)。
 *  @param uid    登录句柄
 *  @param info   输出:设备信息结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_reboot(LONG uid);
/*  远程重启设备。
 *  @param uid    登录句柄
 *  @return       1 成功 / 0 失败                              */

int camera_set_factory_reset(LONG uid);
/*  恢复设备出厂设置。
 *  @param uid    登录句柄
 *  @return       1 成功 / 0 失败                              */

int camera_set_background_correct(LONG uid);
/*  一键背景校正(快门校正),消除热成像背景不均匀。
 *  @param uid    登录句柄
 *  @return       1 成功 / 0 失败                              */

int camera_set_manual_correct(LONG uid);
/*  一键手动校正(快门校正)。
 *  @param uid    登录句柄
 *  @return       1 成功 / 0 失败                              */

int camera_get_hardware_server(LONG uid, USB_SYSTEM_HARDWARE_SERVER *hs);
/*  读取硬件服务参数(USB 模式、设备初始化/运行状态)。
 *  @param uid    登录句柄
 *  @param hs     输出:硬件服务参数结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_hardware_server(LONG uid, const USB_SYSTEM_HARDWARE_SERVER *hs);
/*  设置硬件服务参数。
 *  @param uid    登录句柄
 *  @param hs     输入:硬件服务参数结构体
 *  @return       1 成功 / 0 失败                              */

int camera_get_local_time(LONG uid, USB_SYSTEM_LOCALTIME *lt);
/*  读取设备本地时间(年/月/日/时/分/秒/毫秒)。
 *  @param uid    登录句柄
 *  @param lt     输出:系统时间结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_local_time(LONG uid, const USB_SYSTEM_LOCALTIME *lt);
/*  校时——设置设备本地时间。
 *  @param uid    登录句柄
 *  @param lt     输入:期望的系统时间结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  2.  图像增强 Enhancement(V20 → V1 自动回退)                             *
 *      USB_IMAGE_ENHANCEMENT 结构体,先试 _V20 命令,失败回退 V1。           *
 * ======================================================================== */

int camera_get_enhancement(LONG uid, USB_IMAGE_ENHANCEMENT *enh);
/*  读取完整的图像增强参数(降噪/伪彩/DDE/勾边/宽动态等所有字段)。
 *  @param uid    登录句柄
 *  @param enh    输出:图像增强结构体(注意 enh->dwSize 必须预置 sizeof(*enh))
 *  @return       1 成功 / 0 失败                              */

int camera_set_enhancement(LONG uid, const USB_IMAGE_ENHANCEMENT *enh);
/*  写入完整的图像增强参数(读-改-写风格:先 get 再 put)。
 *  @param uid    登录句柄
 *  @param enh    输入:填充好的图像增强结构体
 *  @return       1 成功 / 0 失败                              */

/* ---- 2a. 伪彩色 ---- */

int camera_get_palette(LONG uid, int *mode);
/*  获取当前伪彩色模式。
 *  @param mode   输出:1=白热 2=黑热 10=融合1 11=彩虹 12=铁红1
 *                13=琥珀1 14=琥珀2 15=高对比 16=色彩1 17=色彩2
 *                18=冰火 19=雨 20=高亮 21=聚焦 22=紫红
 *  @return       1 成功 / 0 失败                              */

int camera_set_palette(LONG uid, int mode);
/*  设置伪彩色模式。
 *  @param mode   同上取值
 *  @return       1 成功 / 0 失败                              */

/* ---- 2b. AGC 模式 ---- */

int camera_get_agc_mode(LONG uid, int *mode);
/*  读取 AGC(自动增益控制)模式。
 *  @param mode   输出:1=线性 2=直方图 3=巡检 4=手动
 *  @return       1 成功 / 0 失败                              */

int camera_set_agc_mode(LONG uid, int mode);
/*  设置 AGC 模式。
 *  @param mode   同上取值
 *  @return       1 成功 / 0 失败                              */

/* ---- 2c. DDE(数字细节增强) ---- */

int camera_get_dde_enabled(LONG uid, int *enabled);
/*  读取 DDE 开关状态。
 *  @param enabled 输出:0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

int camera_set_dde_enabled(LONG uid, int enabled);
/*  设置 DDE 开关。
 *  @param enabled 0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

int camera_get_dde_level(LONG uid, DWORD *level);
/*  读取 DDE 细节增强级别。
 *  @param level  输出:0~100
 *  @return       1 成功 / 0 失败                              */

int camera_set_dde_level(LONG uid, DWORD level);
/*  设置 DDE 细节增强级别。
 *  @param level  0~100
 *  @return       1 成功 / 0 失败                              */

/* ---- 2d. 降噪 ---- */

int camera_get_noise_reduce_mode(LONG uid, int *mode);
/*  读取降噪模式。
 *  @param mode   输出:0=关闭 1=普通 2=专家
 *  @return       1 成功 / 0 失败                              */

int camera_set_noise_reduce_mode(LONG uid, int mode);
/*  设置降噪模式。
 *  @param mode   同上取值。注意:设为 2(专家)时需配合 temporal/spatial 级别。
 *  @return       1 成功 / 0 失败                              */

int camera_get_general_denoise(LONG uid, DWORD *level);
/*  读取普通降噪级别(普通模式下生效)。
 *  @param level  输出:0~100
 *  @return       1 成功 / 0 失败                              */

int camera_set_general_denoise(LONG uid, DWORD level);
/*  设置普通降噪级别。自动将降噪模式设为 1(普通)。
 *  @param level  0~100
 *  @return       1 成功 / 0 失败                              */

int camera_get_spatial_denoise(LONG uid, DWORD *level);
/*  读取空域降噪级别(专家模式下生效)。
 *  @param level  输出:0~100
 *  @return       1 成功 / 0 失败                              */

int camera_set_spatial_denoise(LONG uid, DWORD level);
/*  设置空域降噪级别。自动将降噪模式设为 2(专家)。
 *  @param level  0~100
 *  @return       1 成功 / 0 失败                              */

int camera_get_temporal_denoise(LONG uid, DWORD *level);
/*  读取时域降噪级别(专家模式下生效)。
 *  @param level  输出:0~100
 *  @return       1 成功 / 0 失败                              */

int camera_set_temporal_denoise(LONG uid, DWORD level);
/*  设置时域降噪级别。自动将降噪模式设为 2(专家)。
 *  @param level  0~100
 *  @return       1 成功 / 0 失败                              */

/* ---- 2e. 勾边 ---- */

int camera_get_hook_edge(LONG uid, int *enabled, int *level);
/*  读取勾边(边缘增强)参数。
 *  @param enabled 输出:0=关闭 1=开启
 *  @param level   输出:0~100
 *  @return       1 成功 / 0 失败                              */

int camera_set_hook_edge(LONG uid, int enabled, int level);
/*  设置勾边参数。
 *  @param enabled 0=关闭 1=开启
 *  @param level   0~100
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  3.  视频调整 VideoAdjust(镜像/数字变倍/工频)                            *
 * ======================================================================== */

int camera_get_video_adjust(LONG uid, USB_IMAGE_VIDEO_ADJUST *va);
/*  读取完整的视频调整参数(镜像/变倍/工频/走廊模式等)。
 *  @param uid    登录句柄
 *  @param va     输出:视频调整结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_video_adjust(LONG uid, const USB_IMAGE_VIDEO_ADJUST *va);
/*  写入完整的视频调整参数。
 *  @param uid    登录句柄
 *  @param va     输入:填充好的视频调整结构体
 *  @return       1 成功 / 0 失败                              */

int camera_get_mirror_mode(LONG uid, int *mode);
/*  读取镜像模式。
 *  @param mode   输出:0=关闭 1=中心 2=左右 3=上下
 *  @return       1 成功 / 0 失败                              */

int camera_set_mirror_mode(LONG uid, int mode);
/*  设置镜像模式。
 *  @param mode   同上取值
 *  @return       1 成功 / 0 失败                              */

int camera_get_digital_zoom(LONG uid, int *zoom);
/*  读取数字变倍倍率。
 *  @param zoom   输出:0=1× 1=2× 2=4× 3=8×
 *  @return       1 成功 / 0 失败                              */

int camera_set_digital_zoom(LONG uid, int zoom);
/*  设置数字变倍。
 *  @param zoom   同上取值
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  4.  亮度 / 对比度(单字段结构体)                                         *
 * ======================================================================== */

int camera_get_brightness(LONG uid, DWORD *value);
/*  读取图像亮度。
 *  @param value  输出:0~100
 *  @return       1 成功 / 0 失败                              */

int camera_set_brightness(LONG uid, DWORD value);
/*  设置图像亮度。
 *  @param value  0~100
 *  @return       1 成功 / 0 失败                              */

int camera_get_contrast(LONG uid, DWORD *value);
/*  读取图像对比度。
 *  @param value  输出:0~100
 *  @return       1 成功 / 0 失败                              */

int camera_set_contrast(LONG uid, DWORD value);
/*  设置图像对比度。
 *  @param value  0~100
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  5.  测温基本参数 Thermometry                                              *
 *      USB_THERMOMETRY_BASIC_PARAM 结构体(发射率/距离/范围/单位/报警/环境等)   *
 * ======================================================================== */

int camera_get_thermometry(LONG uid, USB_THERMOMETRY_BASIC_PARAM *tp);
/*  读取完整的测温基本参数结构体(所有字段)。
 *  @param uid    登录句柄
 *  @param tp     输出:测温参数结构体(tp->dwSize 预置 sizeof(*tp))
 *  @return       1 成功 / 0 失败                              */

int camera_set_thermometry(LONG uid, const USB_THERMOMETRY_BASIC_PARAM *tp);
/*  写入完整的测温基本参数结构体。
 *  @param uid    登录句柄
 *  @param tp     输入:填充好的测温参数结构体
 *  @return       1 成功 / 0 失败                              */

/* ---- 5a. 发射率 ---- */

int camera_get_emissivity(LONG uid, DWORD *value_x100);
/*  读取发射率。
 *  @param value_x100  输出:实际值×100(例如 0.97 → 97)
 *  @return       1 成功 / 0 失败                              */

int camera_set_emissivity(LONG uid, DWORD value_x100);
/*  设置发射率。
 *  @param value_x100  实际值×100(范围 1~100,对应 0.01~1.00)
 *  @return       1 成功 / 0 失败                              */

/* ---- 5b. 测温距离 ---- */

int camera_get_distance(LONG uid, DWORD *distance_cm);
/*  读取测温距离。
 *  @param distance_cm  输出:厘米
 *  @return       1 成功 / 0 失败                              */

int camera_set_distance(LONG uid, DWORD distance_cm);
/*  设置测温距离。
 *  @param distance_cm  厘米,范围 30~200(即 0.3~2.0 米)
 *  @return       1 成功 / 0 失败                              */

int camera_get_distance_unit(LONG uid, int *unit);
/*  读取距离单位。
 *  @param unit   输出:1=米 2=厘米 3=英尺
 *  @return       1 成功 / 0 失败                              */

int camera_set_distance_unit(LONG uid, int unit);
/*  设置距离单位。
 *  @param unit   同上取值
 *  @return       1 成功 / 0 失败                              */

/* ---- 5c. 温度单位 ---- */

int camera_get_temp_unit(LONG uid, int *unit);
/*  读取温度单位。
 *  @param unit   输出:1=℃  2=℉  3=K
 *  @return       1 成功 / 0 失败                              */

int camera_set_temp_unit(LONG uid, int unit);
/*  设置温度单位。
 *  @param unit   同上取值
 *  @return       1 成功 / 0 失败                              */

/* ---- 5d. 测温范围 ---- */

int camera_get_temp_range(LONG uid, int *range);
/*  读取测温范围档位。
 *  @param range  输出:1~5(各档位对应的上下限温度由硬件决定,只读)
 *  @return       1 成功 / 0 失败                              */

int camera_set_temp_range(LONG uid, int range);
/*  设置测温范围档位。
 *  @param range  1~5
 *  @return       1 成功 / 0 失败                              */

int camera_get_temp_range_auto_enabled(LONG uid, int *enabled);
/*  读取测温档位自动切换开关。
 *  @param enabled  输出:0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

int camera_set_temp_range_auto_enabled(LONG uid, int enabled);
/*  设置测温档位自动切换开关。
 *  @param enabled  0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

/* ---- 5e. 标定系数 ---- */

int camera_get_calibration_coeff(LONG uid, DWORD *value_x100);
/*  读取标定系数。
 *  @param value_x100  输出:实际值×100(例如 1.00 → 100),范围 0~3000
 *  @return       1 成功 / 0 失败                              */

int camera_set_calibration_coeff(LONG uid, DWORD value_x100);
/*  设置标定系数。
 *  @param value_x100  实际值×100(0.00~30.00 对应 0~3000)
 *  @return       1 成功 / 0 失败                              */

int camera_get_calibration_coeff_enabled(LONG uid, int *enabled);
/*  读取标定系数启用状态。
 *  @param enabled  输出:0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

int camera_set_calibration_coeff_enabled(LONG uid, int enabled);
/*  设置标定系数启用状态。
 *  @param enabled  0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

/* ---- 5f. 反射温度 ---- */

int camera_get_reflective_temp(LONG uid, DWORD *temp_x10);
/*  读取反射温度补偿值。
 *  @param temp_x10  输出:(实际温度 + 100) × 10(例如 25.0℃ → 1250)
 *  @return       1 成功 / 0 失败                              */

int camera_set_reflective_temp(LONG uid, DWORD temp_x10);
/*  设置反射温度补偿值。
 *  @param temp_x10  (实际温度 + 100) × 10
 *  @return       1 成功 / 0 失败                              */

int camera_get_reflective_enabled(LONG uid, int *enabled);
/*  读取反射温度使能。
 *  @param enabled  输出:0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

int camera_set_reflective_enabled(LONG uid, int enabled);
/*  设置反射温度使能。
 *  @param enabled  0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

/* ---- 5g. 环境温度 ---- */

int camera_get_env_temp(LONG uid, int *enabled, DWORD *temp);
/*  读取环境温度参数。
 *  @param enabled 输出:0=关闭 1=开启
 *  @param temp    输出:(实际值 + 100) × 10,-99.0~99.0℃
 *  @return       1 成功 / 0 失败                              */

int camera_set_env_temp(LONG uid, int enabled, DWORD temp);
/*  设置环境温度参数。
 *  @param enabled 0=关闭 1=开启
 *  @param temp    (实际值 + 100) × 10
 *  @return       1 成功 / 0 失败                              */

/* ---- 5h. 报警温度 ---- */

#define CAMERA_ALERT_TEMP_MIN  0u
#define CAMERA_ALERT_TEMP_MAX  20000u  /* 200.00℃ × 100 */

int camera_get_alert_temp(LONG uid, DWORD *temp_x100);
/*  读取预警温度(根据位号显示框标记)。
 *  @param temp_x100  输出:实际值×100
 *  @return       1 成功 / 0 失败                              */

int camera_set_alert_temp(LONG uid, DWORD temp_x100);
/*  设置预警温度。
 *  @param temp_x100  实际值×100
 *  @return       1 成功 / 0 失败                              */

int camera_get_alarm_temp(LONG uid, DWORD *temp_x100);
/*  读取报警温度(超温报警)。
 *  @param temp_x100  输出:实际值×100
 *  @return       1 成功 / 0 失败                              */

int camera_set_alarm_temp(LONG uid, DWORD temp_x100);
/*  设置报警温度。
 *  @param temp_x100  实际值×100
 *  @return       1 成功 / 0 失败                              */

/* ---- 5i. 显示元素 ---- */

int camera_get_display_flags(LONG uid, int *max_en, int *min_en,
                             int *avg_en, int *cen_en);
/*  读取测温信息叠加显示选项。
 *  @param max_en  输出:0=关闭 1=开启  最高温显示
 *  @param min_en  输出:0=关闭 1=开启  最低温显示
 *  @param avg_en  输出:0=关闭 1=开启  平均温显示
 *  @param cen_en  输出:0=关闭 1=开启  中心温显示
 *  @return       1 成功 / 0 失败                              */

int camera_set_display_flags(LONG uid, int max_en, int min_en,
                             int avg_en, int cen_en);
/*  设置测温信息叠加显示选项。
 *  @param max_en/min_en/avg_en/cen_en  0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

/* ---- 5j. 全局开关与码流叠加 ---- */

int camera_get_thermometry_enabled(LONG uid, int *enabled);
/*  读取测温功能全局使能。
 *  @param enabled  输出:0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

int camera_set_thermometry_enabled(LONG uid, int enabled);
/*  设置测温功能全局使能。
 *  @param enabled  0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

int camera_get_thermometry_overlay(LONG uid, int *enabled);
/*  读取测温信息码流叠加使能(由设备在视频流中叠加温度文字/框)。
 *  @param enabled  输出:0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

int camera_set_thermometry_overlay(LONG uid, int enabled);
/*  设置测温信息码流叠加使能。
 *  @param enabled  0=关闭 1=开启
 *  @return       1 成功 / 0 失败                              */

/* ---- 5k. 外部光学参数 ---- */

int camera_get_external_optics_correction(LONG uid, DWORD *temp);
/*  读取外部光学窗口校正温度。
 *  @param temp    输出:实际值×100
 *  @return       1 成功 / 0 失败                              */

int camera_set_external_optics_correction(LONG uid, DWORD temp);
/*  设置外部光学窗口校正温度。
 *  @param temp    实际值×100
 *  @return       1 成功 / 0 失败                              */

int camera_get_atmospheric_humidity(LONG uid, DWORD *humidity);
/*  读取大气湿度补偿值。
 *  @param humidity 输出:百分比×100(例如 5000 = 50.00%)
 *  @return       1 成功 / 0 失败                              */

int camera_set_atmospheric_humidity(LONG uid, DWORD humidity);
/*  设置大气湿度补偿值。
 *  @param humidity 百分比×100
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  6.  测温模式 ThermometryMode                                              *
 *      USB_THERMOMETRY_MODE:普通 / 专家 + ROI 使能                          *
 * ======================================================================== */

int camera_get_thermometry_mode(LONG uid, USB_THERMOMETRY_MODE *mode);
/*  读取测温模式(普通/专家)及 ROI 使能状态。
 *  @param uid    登录句柄
 *  @param mode   输出:测温模式结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_thermometry_mode(LONG uid, const USB_THERMOMETRY_MODE *mode);
/*  设置测温模式。
 *  @param uid    登录句柄
 *  @param mode   输入:填充好的测温模式结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  7.  测温规则区域 ThermometryRegions                                       *
 *      USB_THERMOMETRY_REGIONS:多个 THERMAL_REGION,归一化坐标 0-1000       *
 * ======================================================================== */

int camera_get_thermometry_regions(LONG uid, USB_THERMOMETRY_REGIONS *regs);
/*  读取测温规则区域配置。
 *  @param uid    登录句柄
 *  @param regs   输出:测温规则区域结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_thermometry_regions(LONG uid,
                                   const USB_THERMOMETRY_REGIONS *regs);
/*  写入测温规则区域配置。
 *  @param uid    登录句柄
 *  @param regs   输入:填充好的测温规则区域结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  8.  测温修正 TemperatureCorrect                                           *
 *      USB_TEMPERATURE_CORRECT:黑体温度修正(发射率/距离/黑体温度/修正温度)   *
 * ======================================================================== */

int camera_get_temperature_correct(LONG uid, USB_TEMPERATURE_CORRECT *tc);
/*  读取测温修正参数(黑体修正使能/发射率/距离/黑体温度/中心坐标/修正温度)。
 *  @param uid    登录句柄
 *  @param tc     输出:测温修正结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_temperature_correct(LONG uid,
                                   const USB_TEMPERATURE_CORRECT *tc);
/*  写入测温修正参数。
 *  @param uid    登录句柄
 *  @param tc     输入:填充好的测温修正结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  9.  黑体参数 BlackBody                                                    *
 *      USB_BLACK_BODY:黑体使能/发射率/距离/黑体温度/中心坐标                 *
 * ======================================================================== */

int camera_get_black_body(LONG uid, USB_BLACK_BODY *bb);
/*  读取黑体参数(黑体使能/发射率/距离/温度/中心坐标)。
 *  @param uid    登录句柄
 *  @param bb     输出:黑体参数结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_black_body(LONG uid, const USB_BLACK_BODY *bb);
/*  写入黑体参数。
 *  @param uid    登录句柄
 *  @param bb     输入:填充好的黑体参数结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  10. 体温补偿 BodytempCompensation                                         *
 *      USB_BODYTEMP_COMPENSATION:人体测温使能/补偿类型/补偿值/环境温度/曲线   *
 * ======================================================================== */

int camera_get_bodytemp_compensation(LONG uid,
                                     USB_BODYTEMP_COMPENSATION *bc);
/*  读取体温补偿参数(使能/补偿方式/补偿值/环境温度/曲线灵敏度等)。
 *  @param uid    登录句柄
 *  @param bc     输出:体温补偿结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_bodytemp_compensation(LONG uid,
                                     const USB_BODYTEMP_COMPENSATION *bc);
/*  写入体温补偿参数。
 *  @param uid    登录句柄
 *  @param bc     输入:填充好的体温补偿结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  11. 全屏测温参数 P2PParam                                                 *
 *      USB_P2P_PARAM:全屏测温 JPEG 图返回使能                                *
 * ======================================================================== */

int camera_get_p2p_param(LONG uid, USB_P2P_PARAM *p2p);
/*  读取全屏测温参数(JPEG 图返回使能)。
 *  @param uid    登录句柄
 *  @param p2p    输出:全屏测温参数结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_p2p_param(LONG uid, const USB_P2P_PARAM *p2p);
/*  写入全屏测温参数。
 *  @param uid    登录句柄
 *  @param p2p    输入:填充好的全屏测温参数结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  12. 热成像码流参数 ThermalStreamParam                                     *
 *      USB_THERMAL_STREAM_PARAM:编码类型(裸数据/全屏测温/YUV 等)           *
 *      注意:camera_configure() 已在 camera.c 中调用 SET,此处只提供 GET。    *
 * ======================================================================== */

int camera_get_thermal_stream_param(LONG uid,
                                    USB_THERMAL_STREAM_PARAM *sp);
/*  读取当前热成像码流参数(编码类型/分辨率/帧率)。
 *  @param uid    登录句柄
 *  @param sp     输出:码流参数结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  13. 算法版本 ThermalAlgVersion                                            *
 * ======================================================================== */

int camera_get_thermal_alg_version(LONG uid,
                                   USB_THERMAL_ALG_VERSION *ver);
/*  读取热成像算法版本(算法库名称、逻辑版本号)。
 *  @param uid    登录句柄
 *  @param ver    输出:算法版本结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  14. 诊断信息导出(系统诊断)                                               *
 *      USB_SYSTEM_DIAGNOSED_DATA:导出设备诊断信息到文件                      *
 * ======================================================================== */

int camera_get_system_diagnosed_data(LONG uid,
                                     USB_SYSTEM_DIAGNOSED_DATA *dd);
/*  导出设备诊断信息。调用前 dd->pDiagnosedData 需指向足够大的缓冲区,
 *  dd->dwDataLenth 需预置缓冲区大小。
 *  @param uid    登录句柄
 *  @param dd     输出:诊断数据结构体(诊断数据写入 pDiagnosedData)
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  15. ROI 最高温搜索(复杂操作,涉及 JPEG 输出)                              *
 *      USB_ROI_MAX_TEMPERATURE_SEARCH:设置 ROI 区域查询最高温                 *
 * ======================================================================== */

int camera_get_roi_max_temperature_search(
        LONG uid,
        USB_ROI_MAX_TEMPERATURE_SEARCH *in,
        USB_ROI_MAX_TEMPERATURE_SEARCH_RESULT *out);
/*  ROI 最高温信息查询。输入 ROI 区域和时间,输出各 ROI 最高温及可选的 JPEG 图。
 *  调用前 out->pJpegPic 需指向足够大的缓冲区,out->dwJpegPicLen 预置缓冲区大小。
 *  @param uid    登录句柄
 *  @param in     输入:查询条件(ROI 区域/时间/JPEG 使能等)
 *  @param out    输出:查询结果(最高温/坐标/JPEG 数据)
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  16. 双光校准(复杂操作,涉及可见光图片文件)                                *
 * ======================================================================== */

int camera_post_double_lights_correct(
        LONG uid,
        const USB_DOUBLE_LIGHTS_CORRECT *in,
        USB_DOUBLE_LIGHTS_CORRECT_RESULT *out);
/*  双光校准。输入可见光图片和校准参数,输出校准结果 JPEG。
 *  调用前 in->pVisiblePic 指向已读入的可见光图片数据。
 *         out->pJpegPic 指向输出 JPEG 缓冲区,dwJpegPicLen 预置缓冲区大小。
 *  @param uid    登录句柄
 *  @param in     输入:校准参数
 *  @param out    输出:校准结果
 *  @return       1 成功 / 0 失败                              */

/* --- 双光校准坐标控制 --- */

int camera_get_double_lights_correct_points_ctrl(
        LONG uid, USB_DOUBLE_LIGHTS_CORRECT_POINTS_CTRL *ctrl);
/*  读取双光校准坐标控制使能。
 *  @param ctrl   输出:坐标控制结构体
 *  @return       1 成功 / 0 失败                              */

int camera_set_double_lights_correct_points_ctrl(
        LONG uid, const USB_DOUBLE_LIGHTS_CORRECT_POINTS_CTRL *ctrl);
/*  设置双光校准坐标控制使能。
 *  @param ctrl   输入:填充好的坐标控制结构体
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  17. 测温标定文件导入导出                                                  *
 * ======================================================================== */

int camera_get_thermometry_calibration_file(
        LONG uid, USB_THERMOMETRY_CALIBRATION_FILE *cf);
/*  导出测温标定文件。
 *  调用前 cf->pCalibrationFile 指向足够大的缓冲区,cf->dwFileLenth 预置缓冲区大小。
 *  @param uid    登录句柄
 *  @param cf     输出:标定文件数据
 *  @return       1 成功 / 0 失败                              */

int camera_set_thermometry_calibration_file(
        LONG uid, const USB_THERMOMETRY_CALIBRATION_FILE *cf);
/*  导入测温标定文件。
 *  调用前 cf->pCalibrationFile 指向已读入的标定文件数据,cf->dwFileLenth 为数据长度,
 *  cf->byFileName 需填文件名。
 *  @param uid    登录句柄
 *  @param cf     输入:标定文件数据
 *  @return       1 成功 / 0 失败                              */

/* ======================================================================== *
 *  18. 命令状态查询                                                        *
 * ======================================================================== */

int camera_get_command_state(LONG uid, USB_COMMAND_STATE *state);
/*  查询设备命令状态(用于判断设备是否空闲可接收新命令)。
 *  @param state  输出:命令状态结构体
 *  @return       1 成功 / 0 失败                              */

#ifdef __cplusplus
}
#endif

#endif /* CAMERA_CONFIG_H */