#ifndef XTCHECKER_H_
#define XTCHECKER_H_
#include "base/define.h"
#include "basechecker.h"

extern Checker_RunCfg_st checker_runcfg;
extern CheckerTask xttaskArray[CHECKER_MAXID_COUNT] ;
/*
@brief 统计模块的上电充能，具有电压设置功能,采集档位 R10_0p1mA_1p6mA_UC
@param1 总线电压
@param2 充电结束时的AD值
@rtv1   返回总线电流低于设置AD值的时间
*/
void XT_Test_PowerOn(void);
/*
@brief 设置总线电压
@param1 总线电压
@rtv1   总线电压
*/
void XT_Test_SetBusV(void);
/*
@brief 测量总线基本电压
@rtv1 返回总线电流 单位0.01uA
*/
void XT_Test_BaseCur(void);
/*
@brief 扫描总线上的电子模块 1发
@param0 UID长度
@param1 使能或失能 UID对比
*/

void XT_Test_ScanUID(void);
/*
@brief 写芯片配置
@param0 UID长度
@param1 密码长度
@param2 反馈电流挡位
@param4 版本标识
@rtv 芯片配置3字节
*/
void XT_Test_WriteChipCfg(void);
/*
@brief 读取芯片配置并比对
@param0 UID长度
@param1 密码长度
@param2 反馈电流挡位
@param4 版本标识
*/
void XT_Test_CheckChipCfg(void);
/*
@brief 模拟注码
*/
void XT_Test_BindTestCode(void);
/*
@brief 充能统计
@param0 充电电流判线值,AD值
@param1 充电末电流结束值，单位0.1uA
@param2 充电最长时间,单位100ms
@param3 充电高压保持时间，单位0.1s
@param4 充电挡位
@rtv0 充能值 单位0.1ms
@rtv1 充末电流 单位0.1uA
@rtv2 充电最大电流 单位0.1Ma
@rtv3 充电抖动幅值 adv
*/

void XT_Test_ChgEnergy(void);
/*
@brief 写现场值,如果UID已经写入，会将现场值读取进行比对
@param 0 编号
@param 1 延时
@param 2 孔号
*/

void XT_Test_WriteRunField(void);
/*
@brief 比对现场值
@param0 比对网络号
@param1 比对延时
@param2 比对孔位
@param3 1使能或 0失能通信反码信息采集
@rtv1 最大反馈电流
@rtv2 最大反馈时间
@rtv3 最小反馈电流
@rtv4 最小反馈时间
*/

void XT_Test_CheckRunField(void);
/*
@brief 桥丝通断检测,如果测试器有uid，将采用uid方式通信
*/
void XT_Test_Resister(void);
/*
@brief 电容容量检测,如果测试器有uid，将采用uid方式通信
@pram  检测电压参数
*/
void XT_Test_Cap(void);
/*
@brief 写管壳码 如果测试器有uid，将采用uid方式通信
@param 命令缓存参数的起始
@param 写入数据长度
*/
void XT_Test_WriteShell(void);
/*
@brief 写UID
@param 命令缓存参数的起始
@param 写入数据长度
*/
void XT_Test_WriteUID(void);
/*
@brief 写密码
@param 命令缓存参数的起始
@param 写入数据长度
*/
void XT_Test_WritePWD(void);
/*
@brief 备份区标记检测,备份区用于存储检测标记
@param0 0备份区标记 或 1比对
@param1 备份区数据掩码 2Bytes
@param1 备份区写入数据 2Bytes

*/

void XT_Test_CheckBackFlag(void);
/*
@brief 备份区标记检测,备份区用于存储检测标记
*/
void XT_Test_ReadBackFlag(void);
/*
@brief 时钟校准
@param0 校准模式 1 快速 0 全
@param1 校准周期
@param2 校准时长
*/
void XT_Test_Trim(void);
/*
@brief 放电
*/
void XT_Test_Discharge(void);

/*
@brief 失能通信末电流采集
*/
void XT_Test_EnCommEndCur(void);
/*
@brief 获取通信末电流
*/
void XT_Test_GetCommEndCur(void);
/*
@brief 在线检测
@param 检测网络号
*/
void XT_Test_OneLineCheck(void);
/*
@brief 状态检测,如果UID已经存在，使用UID读取。否则通过扫描的方式
@param0 状态比较掩码
*/
void XT_Test_CheckState(void);
/*
@brief 起爆
*/
void XT_Test_Boom(void);
/*
@brief 复位
*/
void XT_Test_Reset(void);
/*
@brief 关总线
*/
void XT_Test_PowerOFF(void);
/*
@brief 芯片锁存
*/
void XT_Test_LockCmdC(void);
/*
@brief 赋码设备失能
*/

void XT_Test_CodeBindEn(void);
/*
@brief 接入检测
@param0 上电电压
@param1 超时次数
*/
void XT_Test_InputCheck(void);
/*
@brief 密码验证
*/

void XT_Test_CheckPWD(void);
/*
@brief 三码写入
@rtv 0 执行成功
		 1 电压设置失败
		 3 UID写入失败
		 4 密码写入失败
		 5 获取UID失败
		 6 UID写入失败
		 7 锁存失败
		 8 等待接入超时
*/

uint8_t XT_UID_PWD_Bind(void);
/*
@brief 加载配置参数
@rtv UID长度
@rtv 密码长度
@rtv 版本号
@rtv 反码数据
*/
void XT_Test_LoadChipCfg(void);
/*
@breif 测量电容电压差
@param0 两次测量间隔 0.1s
@rtv0   电压差值
*/
void XT_Test_CapVoltage(void);
/*
@brief 三码绑定验证
*/
void XT_Test_UID_PWD_Verify(void);
/*
@brief 写入三码数据
*/
void XT_Test_UID_PWD_Bind(void);
/* 
@breif 在线检测 并扫描通信
@param0 总线电压
@param1 超时时间1ms 最大6S
@param2 UID长度
*/

void XT_OnLine_SCAN(void);
/*
@brief 芯片离线检测
@param0 超时时间 1ms
@param1 离线电流 0.1uA
@param2 稳定次数
*/

void XT_OFFLine_SCAN(void);
/*
@brief 验证壳码 如果测试器有uid，将采用uid方式通信
@param 命令缓存参数的起始
@param 验证数据长度
*/
void XT_Test_VerfyShell(void);
/*
@brief 芯片离线检测
@param0 充电使能
@param1 采样周期 10ms
@param2 采样次数
*/

void XT_CurMonitor(void);

#endif
