#ifndef EWChecker_h__
#define EWChecker_h__
#include "base/define.h"
#include "basechecker.h"
#include "stdint.h"





extern CheckerTask ewtaskArray[CHECKER_MAXID_COUNT] ;

/*
@brief 统计模块的上电充能，具有电压设置功能,采集档位 R10_0p1mA_1p6mA_UC
@param0 总线电压
@param1 超时时间 0.1ms
@param2 充电结束时的AD值
@rtv0   返回总线电压
@rtv1   返回总线电流低于设置AD值的时间
*/
void EW_Test_PowerOn(void);
/*
@brief 设置总线电压
@param1 总线电压
@rtv1   总线电压
*/
void EW_Test_SetBusV(void);
/*
@brief 测量总线基本电压
@rtv1 返回总线电流 单位0.1uA
*/
void EW_Test_BaseCur(void);
/*
@breif  使能MTP擦写
@param   0 失能 1 使能
*/

void EW_Test_EnMTP(void);
/*
@brief 扫描总线上的电子模块 1发
@param0 UID长度
@param1 使能或失能 UID对比
@param2 使能反馈监控
@rtv1 最大反馈电流
@rtv2 最大反馈时间
@rtv3 最小反馈电流
@rtv4 最小反馈时间
@rtv5 UID 2Bytes
@rtv6 UID 2Bytes
@rtv7 UID 2Bytes
@rtv8 UID 2Bytes   
*/

void EW_Test_ReadUID(void);
/*
@brief 写模块运行时的配置参数
@param0 起爆MOS选择 0内部/1外部
@param1 通信信号源 0:rxh 1:rxl 2:rx
@param2 通信模式   1:差分 2:单端
@param3 起爆日志标记周期 0:不标记 1:5ms 2:10ms 3:20ms 4:50ms 5:10ms 6:150ms 7:200ms
@param4 UID长度
@param5 密码长度
@param6 模块版本
*/
void EW_Test_SetRunCfg(void);
/*
@brief 验证模组运行时配置
@param0 起爆MOS选择 0内部/1外部
@param1 通信信号源 0:rxh 1:rxl 2:rx
@param2 通信模式   1:差分 2:单端
@param3 起爆日志标记周期 0:不标记 1:5ms 2:10ms 3:20ms 4:50ms 5:10ms 6:150ms 7:200ms
@param4 UID长度
@param5 密码长度
@param6 模块版本

*/
void EW_Test_CheckRunCfg(void);
/*
@brief 验证配置
@param0 配置验证掩码低2bytes
@param1 配置验证掩码高2bytes
@param2 配置验证比较低2bytes
@param3 配置验证比较高2bytes
*/
void EW_Test_VerifyRunCfg(void);
/*
@brief 写三码数据测试
*/
void EW_Test_WriteThreedCode(void);
/*
@breif 验证测试的三码数据
*/
void EW_Test_VerifyThreedCode(void);
/*
@brief 自检
@param  自检模式
@param1 自检时间ms
@rtv    自检模式0x08的回读数据
*/
void EW_Test_CheckSelf(void);
/*
@brief 状态码比较
@param0 掩码参数
@param1 比较结果值
@rtv0   状态值低2字节
@rtv1    状态值高2字节
*/
void EW_Test_CheckeState(void);
/*
@brief 充电
@param0 充电模式
@param1 充电分组
*/
void EW_Test_Charge(void);
/*
@brief 充能统计
@param0 充电挡位
@param1 充电电流判线值,AD值
@param2 充电末电流结束值，单位0.1uA
@param3 充电最长时间,单位100ms
@param4 充电高压保持时间，单位0.1s

@rtv0 充能值 单位0.1ms
@rtv1 充末电流 单位0.1uA
@rtv2 充电最大电流 单位0.1Ma
@rtv3 充电抖动幅值 adv
*/

void EW_Test_ChgEnergy(void);
/*
@brief 放电
*/
void EW_Test_DisChg(void);
/*
@brief 写延时
@param0 写延时
*/
void EW_Test_SetDelay(void);
/*
@brief 读延时
*/
void EW_Test_ReadDelay(void);
/*
@brief 时钟校准
@param 校准周期
@param 校准脉冲数据
@rtv   校准值，真实值的4倍
*/
void EW_Test_ClkAmend(void);
/*
@brief 设置通信地址
@param0 通信地址
@param1 设置模式  0:系统 1：UID配置地址 2：快速配置
@param2 延时
@rtv 延时
*/
void EW_Test_SetAddr(void);
/*
@brief 状态巡检，测试系统只能巡检一个地址，起始地址应该大于1，结束地址小于1024,两个地址差值应该小于256
@param0 起始地址
@param1 结束地址
@param2 状态码
@rtv     地址结果
*/

void EW_Test_Inspect(void);
/*
@brief 起爆使能
*/
void EW_Test_EnBoom(void);
/*
@brief 起爆
@param0 采样超时 0.01ms
@param1 起爆电流AD 
@param2 延迟采样ms
@rtv  起爆延时 
*/

void EW_Test_Boom(void);
/*
@brief 运行BootLoader
@param0  0 立即跳转 1 等待升级
*/
void EW_Test_RunBoot(void);
/*
@brief 缓存信息写入MTP
@param0 MTP地址
@param1 缓存地址
@param2 写入长度
*/
void EW_Test_WriteFacBuff(void);
/*
@brief 验证OTP内部与缓存比较
@param0 OTP起始地址
@param1 缓存首地址
@param2 验证长度
*/
void EW_Test_VerifyFacBuff(void);

/*
@brief 关闭总线
*/

void EW_Test_PowerOFF(void);


#endif

