/*
 * @file: 
 * @Author: Lida
 * @Date: 2023-05-16 13:59:10
 * @LastEditors: Lida
 * @LastEditTime: 2023-05-16 14:03:30
 */
#ifndef H_SVC_FACTORY_H
#define H_SVC_FACTORY_H


#include "../../com/svc/svc_com.h"

#define Frame_header				0x68//帧头
#define Type_code						0x11//类型代码
#define UUT_Device_addr			0x01//UUT设备地址
#define PC_Device_addr			0xA1//PC设备地址
#define Frame_end						0x16//帧尾

typedef enum{   
    E_IR_Fun_Start	=0xFD,	//开始测试
    E_IR_Fun_Ir			=0x0F,	//红外测试
    E_IR_Fun_IMEI		=0x17,  //IMEI测试
    E_IR_Fun_IMSI		=0x31,  //IMSI测试
    E_IR_Fun_ICCID	=0x32,  //ICCID测试
    E_IR_Fun_RSRP		=0x33,  //RSRP测试
    E_IR_Fun_Pulse	=0x2F,  //脉冲测试
    E_IR_Fun_Flash	=0x20,  //FLASH测试
	E_IR_Fun_Bat		=0x07,  //电源电压测试
	E_IR_Fun_Lp			=0x2C,  //低功耗测试
	E_IR_Fun_Mag		=0x30,  //强磁测试
	E_IR_Fun_WDG		=0x2B,  //看门狗测试
	E_IR_Fun_WHOLE      =0x0C,  //主板加无磁模块整机测试
	E_IR_Fun_Factory    =0xFC,  //打开整机产测 
	E_IR_Fun_Null   =0x00,	//无功能码
}E_IR_Fun_Code;

typedef struct S_Factory_Data{
	gw_u8 u8Func;				//功能码
	gw_u8 u8Flag_IMEI;	//0-未获取到 1-已获取到IMEI
	gw_u8 u8Flag_IMSI;	//0-未获取到 1-已获取到IMSI
	gw_u8 u8Flag_ICCID;	//0-未获取到 1-已获取到ICCID
	gw_u8 u8Flag_RSRP;	//0-未获取到 1-已获取到RSRP
	gw_u8 u8Flag_WDG;		//0-未复位	 1-已复位
	gw_u8 u8Flag_Mag;		//0-未检测到磁开关  1-有  2-进入低功耗前置2
	gw_u8 u8Flag_Lp;		//1-需要进入低功耗
    gw_u8 u8Flag_NRST;
	gw_u8 u8FactoryTest;
	gw_u8 u8FactoryLowp;	
	gw_u8 u8PulseTestCnt;
}S_Factory_Data;

S_Factory_Data* Svc_Factory_Get_Data(void);
void Svc_Factory_Log_Parse(gw_u8* pu8Data,gw_u16 u16Len);
void Svc_Factory_Command_Deal(void);
void Svc_Factory_Log_Send_Data(gw_u8 u8Func, gw_u8 u8Succ);
void Svc_Factory_Mag_Init(void);
void Svc_Factory_Init(void);
gw_u8 Svc_Factory_Is_Start(gw_u8* pu8Data,gw_u16 u16Len);
void Svc_Factory_Into_Lp(void);
#endif
