#ifndef _HIK_NET_SDK_INSIDE_H_
#define _HIK_NET_SDK_INSIDE_H_


#include "hk-net-sdk.h"

#ifdef __cplusplus
extern "C"
{
#endif


#ifndef _HK_MACHINE_RECORD_FILE_INFO_TYPE_DEF_
#define _HK_MACHINE_RECORD_FILE_INFO_TYPE_DEF_
struct NET_Machine_Record_info{
    unsigned long long ull_start_time;
    unsigned long long ull_stop_time;
    char pc_filename[64];
};
#endif

HK_NET_API hk_mulcast_discovery_send_inquiry(HKHANDLE h);


#ifndef LIBRARY_SUPPORT_ONLY_HEIKA
#ifndef _DECODE_CALLBACK_DEF_
#define _DECODE_CALLBACK_DEF_
typedef bool(CALLBACK *REALTIME_VIDEO_DECODE_CB_FUNC)(unsigned int ui_channel_no, unsigned char *puc_data, unsigned int ui_len, unsigned short us_width, unsigned short us_height, void *p_user_data);
#endif

HK_NET_API hk_net_dev_enable_other_company();

//解码后回调
HK_NET_API hk_net_dev_set_realplay_decode_callback(HKHANDLE h, REALTIME_VIDEO_DECODE_CB_FUNC p_func, void *p_user);

//厂商类型(镜头只为掩饰)
HK_NET_API hk_net_dev_get_len_type(HKHANDLE h, int *pi_type);


HK_NET_API hk_net_dev_get_all_part(HKHANDLE h, char pc_ir_ip[16], char pc_vi_ip[16], unsigned int *pui_ptz);
HK_NET_API hk_net_dev_update_machine_software(HKHANDLE h, char *pc_filename);


//--------------------以下接口仅海康设备支持-----------------
HK_NET_API hk_net_dev_capture_all_data(HKHANDLE h, char *puc_ir_data, unsigned int *pui_ir_len, char *puc_vi_data, unsigned int *pui_vi_len, char *puc_temperature_data, unsigned int *pui_temp_len);//pc_data, 14位时间,例：20210802151515
//成像模式设置与获取(融合or普通)
HK_NET_API hk_net_dev_get_pip_capabilities(HKHANDLE h, bool *b_fusion, float *f_dist_start, float *f_dist_end, float *f_dist);
HK_NET_API hk_net_dev_set_pip_capabilities(HKHANDLE h, bool b_fusion, float f_dist);

//数字变倍倍率限制
HK_NET_API hk_net_dev_set_zoom_limit(HKHANDLE h, unsigned int ui_channel_no, unsigned int ui_zoom_limit);
HK_NET_API hk_net_dev_zoom_ctrl(HKHANDLE h, unsigned int ui_channel_no, int i_type); //i_type: 0, stop; 1, in; 2, out

HK_NET_API hk_net_set_preset_temperature_alarm_upload_flag(HKHANDLE h, bool b_enable);
HK_NET_API hk_net_get_preset_temperature_alarm_upload_flag(HKHANDLE h, bool *pb_enable);

HK_NET_API hk_net_get_ptz_absolute_zoom(HKHANDLE h, unsigned int ui_channel_no, unsigned int *pui_absolute_zoom);

//--------------------以上接口仅海康设备支持-----------------
#endif

//-------------------------------------------------------------华丽的分隔线--------------------------------------------------------------------------------

//--------------------以下接口仅黑卡设备支持-----------------
#ifndef _IMAGING_INFO_CB_DEF_
#define _IMAGING_INFO_CB_DEF_
typedef bool(CALLBACK *REALTIME_VIDEO_IMAGING_INFO_CB_FUNC)(unsigned int ui_channel_no, int i_type, float f_range_max, float f_range_min, void *p_user_data);
#endif

HK_NET_API hk_net_dev_set_imaging_info_callback(HKHANDLE h, REALTIME_VIDEO_IMAGING_INFO_CB_FUNC p_func, void *p_user);
HK_NET_API hk_net_dev_set_imaging_info(HKHANDLE h, int i_type, float f_range_max, float f_range_min);//i_type: 0自动，1手动

HK_NET_API hk_net_dev_temperature_correct(HKHANDLE h);

HK_NET_API hk_net_dev_disable_max_temperature_osd(HKHANDLE h, unsigned int ui_channel_no);

HK_NET_API hk_net_dev_set_hek_palette(HKHANDLE h, int i_palette);
HK_NET_API hk_net_dev_get_hek_palette(HKHANDLE h, int *pi_palette);

HK_NET_API hk_net_dev_set_machine_record_start(HKHANDLE h);
HK_NET_API hk_net_dev_set_machine_record_stop(HKHANDLE h);
HK_NET_API hk_net_dev_get_machine_record_status(HKHANDLE h, bool *pb_status);
HK_NET_API hk_net_dev_get_machine_record_filelist(HKHANDLE h, unsigned int ui_start_time, unsigned int ui_end_time, NET_Machine_Record_info *pst_file_list, unsigned int *pui_count);
HK_NET_API hk_net_dev_download_machine_record_file(HKHANDLE h, char *pc_filename, char *pc_save_file);


//--------------------以上接口仅黑卡设备支持-----------------



#ifdef __cplusplus
}
#endif

#endif
