Files
checker_slave/source/elec_det/test/XTCheckerTest.c

317 lines
13 KiB
C

#include "base/define.h"
#include "stdlib.h"
#include "hardware/gpio_cfg.h"
#include "base/delay.h"
#include "hardware/adc_cfg.h"
#include "hardware/power.h"
#include "base/utility.h"
//#include "usartapp.h"
//#include "database.h"
#include "driver/XTDriver.h"
#include "interface/BaseChecker.h"
#include "interface/XTChecker.h"
#include "elec_io.h"
//volatile uint16_t jq_adc_test_buf[2048];
static void XTCheckerTest(int argc, char**argv)
{
uint32_t h_power,m_power;
uint16_t us_array[20];
uint8_t* puc_buf;
uint16_t us_temp;
rt_memset(&checker_runcfg.params,0,sizeof(checker_runcfg.params));
rt_memset(&checker_runcfg.Task_Result,0,sizeof(checker_runcfg.Task_Result));
checker_runcfg.excue_rtv = 0;
checker_runcfg.param_count = 0;
checker_runcfg.rtv_count = 0;
checker_runcfg.rtv_index = 0;
checker_runcfg.task_info.runindex = 0;
if(argc > 2)
{
checker_runcfg.param_count = argc-2;
us_temp = 0;
while(us_temp < checker_runcfg.param_count)
{
checker_runcfg.params[us_temp] = atoi(argv[us_temp+2]);
us_temp++;
}
}
if (argc < 2)
{
goto CH_help_label_;
}else if(!rt_strcmp(argv[1], "ON")){
XTBUS_ON
}else if(!rt_strcmp(argv[1], "OFF")){
XTBUS_OFF
}
else if(!rt_strcmp(argv[1], "H")){
XTBUS_W_1
}else if(!rt_strcmp(argv[1], "L")){
XTBUS_W_0
}else if(!rt_strcmp(argv[1], "CURRENT")){
rt_kprintf("Bus Cur %d 0.1uA \n",Power_GetCurrent());
}else if(!rt_strcmp(argv[1], "PowerPrapare")){
Checker_PowerPrapare();
rt_kprintf("PowerPrapare Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "PowerOn")){
checker_runcfg.rtv_count = 2;
XT_Test_PowerOn();
rt_kprintf("PowerOn Excute %d BusV %d Energy %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
}else if(!rt_strcmp(argv[1], "SetBusV")){
checker_runcfg.rtv_count = 1;
XT_Test_SetBusV();
rt_kprintf("SetBusV Excute %d BusV %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0] );
}else if(!rt_strcmp(argv[1], "BaseCur")){
checker_runcfg.rtv_count = 2;
XT_Test_BaseCur();
rt_kprintf("BaseCur Excute %d BusCur1 %d BusCur2 %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
}
else if(!rt_strcmp(argv[1], "ScanUID")){
checker_runcfg.rtv_count = (checker_runcfg.params[0]+8+1)/2;
XT_Test_ScanUID();
rt_kprintf("ScanUID excute %d \t",checker_runcfg.Task_Result[0]);
us_temp = 0;
while(us_temp < checker_runcfg.rtv_count)
{
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp]) & 0x0FF);
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp]>>8) & 0x0FF);
us_temp++;
}
printf("\n");
}else if(!rt_strcmp(argv[1], "WriteChipCfg")){
XT_Test_WriteChipCfg();
printf("WriteChipCfg Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CheckChipCfg")){
XT_Test_CheckChipCfg();
printf("CheckChipCfg Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "BindTestCode")){
XT_Test_BindTestCode();
printf("BindTestCode Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ChgEnergy")){
checker_runcfg.rtv_count = 4;
XT_Test_ChgEnergy();
printf("ReadState Excute %d Energy_0.1ms %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
printf("EndCur_0.1uA %d ",checker_runcfg.Test_Rtv[1]);
printf("MaxCur_0.1mA %d ",checker_runcfg.Test_Rtv[2]);
printf("ShakeADV %d \n",checker_runcfg.Test_Rtv[3]);
} else if(!rt_strcmp(argv[1], "WriteRunField")){
XT_Test_WriteRunField();
printf("WriteRunField Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CheckRunField")){
checker_runcfg.rtv_count = 4;
XT_Test_CheckRunField();
printf("ReadState Excute %d MaxCur %d MaxTime %d MinCur %d MinTime %d\n",checker_runcfg.Task_Result[0],\
checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[2],checker_runcfg.Test_Rtv[3]);
}else if(!rt_strcmp(argv[1], "Resister")){
checker_runcfg.rtv_count = 1;
XT_Test_Resister();
printf("Resister Excute %d R_adc %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "Cap")){
checker_runcfg.rtv_count = 1;
XT_Test_Cap();
printf("Cap Excute %d Cap %d 0.1uf\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "WaitDelay")){
Checker_WaitDelay();
printf("Cap Excute %d C\n",checker_runcfg.Task_Result[0]);
}
else if(!rt_strcmp(argv[1], "WriteShell")){
XT_Test_WriteShell();
printf("WriteShell Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "WriteUID")){
XT_Test_WriteUID();
printf("WriteUID Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "WritePWD")){
XT_Test_WritePWD();
printf("WritePWD Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CheckBackFlag")){
XT_Test_CheckBackFlag();
printf("CheckBackFlag Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ReadBackFlag")){
checker_runcfg.rtv_count = 2;
XT_Test_ReadBackFlag();
printf("Discharge Excute %d BackBytes %04X %04X\n ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1]);
}else if(!rt_strcmp(argv[1], "Trim")){
XT_Test_Trim();
printf("Trim Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "Discharge")){
XT_Test_Discharge();
printf("Discharge Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "EnCommEndCur")){
XT_Test_EnCommEndCur();
printf("EnCommEndCur Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "GetCommEndCur")){
checker_runcfg.rtv_count = 1;
XT_Test_GetCommEndCur();
printf("GetCommEndCur Excute %d Cur_ADC %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "OneLineCheck")){
XT_Test_OneLineCheck();
printf("OneLineCheck Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CheckState")){
checker_runcfg.rtv_count = 1;
XT_Test_CheckState();
printf("CheckState Excute %d CommCur %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "Boom")){
checker_runcfg.rtv_count = 2;
XT_Test_Boom();
printf("Boom Excute %d delay %d 0.1ms net_id %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "Reset")){
XT_Test_Reset();
printf("Reset Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "PowerOFF")){
XT_Test_PowerOFF();
printf("PowerOFF Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "LockCmdC")){
XT_Test_LockCmdC();
printf("LockCmdC Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CodeBindEn")){
XT_Test_CodeBindEn();
printf("LockCmdC Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "SetWriteBuf")){
Checker_FacBuf[0] = strlen(argv[2]);
memcpy(Checker_FacBuf+2,argv[2],Checker_FacBuf[0]);
Checker_FacBuf[1] = CheckCRC_8(Checker_FacBuf+2,Checker_FacBuf[0]);
printf("SetWriteBuf Excute 0 \n");
}else if(!rt_strcmp(argv[1], "SetWriteBufHex")){
HexStrings2Byte(argv+2,argc-2,Checker_FacBuf+2,48);
Checker_FacBuf[0] = argc-2;
Checker_FacBuf[1] = CheckCRC_8(Checker_FacBuf+2,Checker_FacBuf[0]);
printf("SetWriteBufHex Excute 0 \n");
}else if(!rt_strcmp(argv[1], "InputCheck")){
checker_runcfg.rtv_count = 1;
XT_Test_InputCheck();
printf("InputCheck Excute %d BusVoltage %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "CheckPWD")){
XT_Test_CheckPWD();
printf("CheckPWD Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "UID_PWD_Bind")){
printf("UID_PWD_Bind Excute %d \n",XT_UID_PWD_Bind());
}else if(!rt_strcmp(argv[1], "ResistorSample")){
checker_runcfg.rtv_count = 1;
Checker_ResistorSample();
printf("ResistorSample Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}
else if(!rt_strcmp(argv[1], "LoadChipCfg")){
checker_runcfg.rtv_count = 4;
XT_Test_LoadChipCfg();
printf("LoadChipCfg Excute %d UID_LEN %d PWD_LEN %d CUR_CLASS %d Ver %d\n",\
checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[3],checker_runcfg.Test_Rtv[2]);
}
else if(!rt_strcmp(argv[1], "CapVoltage")){
checker_runcfg.rtv_count = 1;
XT_Test_CapVoltage();
printf("CheckPWD Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "BindUIDPWD")){
memcpy(us_array,argv[2],strlen(argv[2]));
UidCode_YM2JQ(checker_runcfg.writeuid,(uint8_t*)us_array);
m_power = GetPasswordByUidCode((uint8_t*)us_array);
memcpy(checker_runcfg.writepwd,(uint8_t*)&m_power ,4);
checker_runcfg.pwd_len = 4;
checker_runcfg.uid_len = 8;
XT_Test_UID_PWD_Bind();
printf("BindUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "VerifyUIDPWD")){
XT_Test_UID_PWD_Verify();
printf("VerifyUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
}
else if(!rt_strcmp(argv[1], "SetHardVer")){
HexStrings2Byte(argv+2,argc-2,(uint8_t*)(&boardinfo_un.boardinfo.hard_v),2);
SaveBoardInfo();
printf("SetHardVer %04x\n",boardinfo_un.boardinfo.hard_v);
}else if(!rt_strcmp(argv[1], "SetRsisDiff")){
boardinfo_un.boardinfo.resistor_diff = checker_runcfg.params[0];
SaveBoardInfo();
printf("SetRsisDiff %d\n",boardinfo_un.boardinfo.resistor_diff);
}else if(!rt_strcmp(argv[1], "ReadBoard")){
LoadBoardInfo();
printf("BootFlag %08x HardVersion %02x RsistorDiff %d\n PlanID " ,\
boardinfo_un.boardinfo.bootflag,boardinfo_un.boardinfo.hard_v,boardinfo_un.boardinfo.resistor_diff);
}else if(!rt_strcmp(argv[1], "ExcuePlan")){
Ye_RunPlanCheckTest();
}else if(!rt_strcmp(argv[1], "CurMonitor")){
XT_CurMonitor();
printf("CurMonitor Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "VerfyShell")){
checker_runcfg.rtv_count = 7;
XT_Test_VerfyShell();
printf("VerfyShell Excute %d Shell Data \n",checker_runcfg.Task_Result[0]);
us_temp = 0;
while(us_temp < 7)
{
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp]) & 0x0FF);
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp]>>8) & 0x0FF);
if(us_temp == 4)
{
printf("\n");
}
us_temp++;
}
printf("\n");
}
else{
CH_help_label_:
rt_kprintf("CH [ON | OFF | H | L ] \n");
rt_kprintf("PowerPrapare [V1,V2,V3...V10] \n");
rt_kprintf("PowerOn [Voltage] [TimeOut] [End_ADC_V] \n");
rt_kprintf("SetBusV [Voltage] \n");
rt_kprintf("BaseCur \n");
rt_kprintf("ScanUID [UID_LEN] [E_UID_Equal_0]\n");
rt_kprintf("WriteChipCfg [UID_LEN] [PWD_LEN] [FreeBack_Class] [Ver] \n");
rt_kprintf("CheckChipCfg [UID_LEN] [PWD_LEN] [FreeBack_Class] [Ver] \n");
rt_kprintf("BindTestCode \n");
rt_kprintf("ChgEnergy [Vol_Class] [End_ADV] [End_Cur_0.1] [Wait_Timeout] [Chg_Hold]\n");
rt_kprintf("WriteRunField [Net_ID] [Delay] [Local_Num]\n");
rt_kprintf("CheckRunField [Net_ID] [Delay] [Local_Num] [En_Freebakc_0]\n");
rt_kprintf("Resister \n");
rt_kprintf("Cap [Chg_Class][Measure_Time]\n");
rt_kprintf("WriteShell [Buf_Bg] [Len] \n");
rt_kprintf("WaitDelay [Delay_0.1S] [En_Monitor] \n");
rt_kprintf("WriteUID [Buf_Bg] [Len] \n");
rt_kprintf("WritePWD [Buf_Bg] [Len]\n");
rt_kprintf("CheckBackFlag [EN_1Checke_0Write] [2BytesMask] [2BytesData]\n");
rt_kprintf("ReadBackFlag \n");
rt_kprintf("Trim [Trim_Mode][Cycle][Count]\n");
rt_kprintf("Discharge \n");
rt_kprintf("EnCommEndCur \n");
rt_kprintf("GetCommEndCur \n");
rt_kprintf("OneLineCheck [NetID] [MaxNetId]\n");
rt_kprintf("CheckState [StateMask] \n");
rt_kprintf("Boom [Monitor_time]\n");
rt_kprintf("Reset \n");
rt_kprintf("PowerOFF \n");
rt_kprintf("LockCmdC \n");
rt_kprintf("CodeBindEn \n");
rt_kprintf("InputCheck [BusVoltage][TimeOut_1ms]\n");
rt_kprintf("CheckPWD \n");
rt_kprintf("SetHardVer [HardVersion 2Bytes] \n");
rt_kprintf("SetRsisDiff [RsistorDiff *100] \n");
rt_kprintf("ReadBoardInfo \n");
rt_kprintf("SetWriteBuf [HexData...]\n");
rt_kprintf("ResistorSample [Test_Modle]\n");
rt_kprintf("CapVoltage [WaitTime 0.1S]\n");
rt_kprintf("BindUIDPWD [uid_str] \n");
rt_kprintf("VerifyUIDPWD \n");
rt_kprintf("OnlineScan [BusV][TimeOUt][UIDLen] \n");
rt_kprintf("VerfyShell [buf_bg][len] \n");
rt_kprintf("ExcuePlan \n");
}
}
MSH_CMD_EXPORT_ALIAS(XTCheckerTest ,XCH, XT CHecker );