299 lines
5.3 KiB
C
299 lines
5.3 KiB
C
|
|
//-------------------------------------------------------------------------------
|
|
// File Name: debug.c
|
|
// Brief:
|
|
// Version: 1.0.0
|
|
// Create Date: 2018/03/20
|
|
// Create by: Marshal Lee
|
|
// Copyright:
|
|
// Copyright (c) 2017, Richpeace Co., LTD.
|
|
// All rights reserved.
|
|
//
|
|
// Modify by: Marshal Lee
|
|
// Modify Date: 2018/03/20
|
|
//-------------------------------------------------------------------------------
|
|
|
|
#define _IN_DEBUG_C
|
|
|
|
#include "debug.h"
|
|
#include "inout.h"
|
|
#include "shell.h"
|
|
#include "delay.h"
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
void TestInputs(char * para1, char * para2);
|
|
void TestOutput(char * para1, char * para2);
|
|
//--------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
void InitDebug(void)
|
|
{
|
|
AddShellCmd("INPUT", "input detect", TestInputs);
|
|
AddShellCmd("OUTPUT", "output control", TestOutput);
|
|
|
|
#if (0)
|
|
do
|
|
{
|
|
TestOutput("1", "1000");
|
|
}while(1);
|
|
#endif
|
|
}
|
|
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
//
|
|
// 测试功能
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
char g_inputName[INPUT_NUM][INPUT_STR_LEN] =
|
|
{
|
|
"输入1",
|
|
"输入2",
|
|
"输入3",
|
|
"输入4",
|
|
"输入5",
|
|
"输入6",
|
|
"输入7",
|
|
"输入8",
|
|
};
|
|
|
|
#define INPUT_OP(cs, name) do\
|
|
{\
|
|
temp = name();\
|
|
if (temp != inputsta[cs])\
|
|
{\
|
|
inputsta[cs] = temp;\
|
|
printf("%d. (%s) is %d\r\n", inidx++, g_inputName[cs], temp);\
|
|
}\
|
|
}while(0)
|
|
|
|
|
|
void TestInputs(char * para1, char * para2)
|
|
{
|
|
int p1, p2;
|
|
|
|
if (para1 == NULL || para2 == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
printf("para1=%s, para2=%s\r\n", para1, para2);
|
|
|
|
p1 = 0;
|
|
p2 = 0;
|
|
if (strcmp(para1, "") != 0)
|
|
{
|
|
p1 = atoi(para1);
|
|
if (strcmp(para2, "") != 0)
|
|
{
|
|
p2 = atoi(para2);
|
|
}
|
|
}
|
|
|
|
if (p1 == p2)
|
|
{
|
|
}
|
|
|
|
//--------------------------------
|
|
{
|
|
int inidx = 0;
|
|
u8 inputsta[INPUT_NUM];
|
|
u8 temp;
|
|
memset(inputsta, 0xff, INPUT_NUM);
|
|
|
|
do
|
|
{
|
|
INPUT_OP(0, GetInput1Status);
|
|
INPUT_OP(1, GetInput2Status);
|
|
INPUT_OP(2, GetInput3Status);
|
|
INPUT_OP(3, GetInput4Status);
|
|
INPUT_OP(4, GetInput5Status);
|
|
INPUT_OP(5, GetInput6Status);
|
|
INPUT_OP(6, GetInput7Status);
|
|
INPUT_OP(7, GetInput8Status);
|
|
|
|
DelayMs(10);
|
|
|
|
if (IsConsoleCancel() != 0 || p1 == 0) // 终端输入停止
|
|
{
|
|
break;
|
|
}
|
|
|
|
}while(p1 != 0);
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------
|
|
|
|
char g_outputName[OUTPUT_NUM][OUTPUT_STR_LEN] =
|
|
{
|
|
"输出1",
|
|
"输出2",
|
|
"输出3",
|
|
"输出4",
|
|
"输出5",
|
|
"输出6",
|
|
"输出7",
|
|
"输出8",
|
|
};
|
|
|
|
|
|
#define TOUT_OP(cs, name, dl) do\
|
|
{\
|
|
if (p2 == 0)\
|
|
{\
|
|
Set##name##Off();\
|
|
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
|
|
}\
|
|
else if (p2 == 1)\
|
|
{\
|
|
Set##name##On();\
|
|
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
|
|
}\
|
|
else if (p2 == 2)\
|
|
{\
|
|
Set##name##On();\
|
|
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
|
|
DelayMs(dl);\
|
|
Set##name##Off();\
|
|
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
|
|
}\
|
|
else if (p2 > 0)\
|
|
{\
|
|
count = dl*p2;\
|
|
while(count > 0) \
|
|
{\
|
|
count--;\
|
|
Set##name##On();\
|
|
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
|
|
delay = (p2+9)/10;\
|
|
do \
|
|
{ \
|
|
DelayMs(10);\
|
|
if (IsConsoleCancel() != 0) \
|
|
{\
|
|
break;\
|
|
}\
|
|
delay--;\
|
|
}while(delay != 0);\
|
|
if (delay != 0)\
|
|
{\
|
|
break;\
|
|
}\
|
|
Set##name##Off();\
|
|
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
|
|
delay = (p2+9)/10;\
|
|
delay *= 4;\
|
|
do \
|
|
{ \
|
|
DelayMs(10);\
|
|
if (IsConsoleCancel() != 0) \
|
|
{\
|
|
break;\
|
|
}\
|
|
delay--;\
|
|
}while(delay != 0);\
|
|
if (delay != 0)\
|
|
{\
|
|
break;\
|
|
}\
|
|
}\
|
|
Set##name##Off();\
|
|
printf("%d. (%s) is %d\r\n", cs+1, g_outputName[cs], Get##name##Status());\
|
|
}\
|
|
}while(0)
|
|
|
|
|
|
void TestOutput(char * para1, char * para2)
|
|
{
|
|
int p1, p2;
|
|
int count, delay;
|
|
|
|
if (para1 == NULL || para2 == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
printf("para1=%s, para2=%s\r\n", para1, para2);
|
|
|
|
if (strcmp(para1, "") == 0 || strcmp(para2, "") == 0)
|
|
{
|
|
return;
|
|
}
|
|
p1 = atoi(para1);
|
|
p2 = atoi(para2);
|
|
|
|
if (p1 == p2)
|
|
{
|
|
}
|
|
|
|
//--------------------------------
|
|
if (p1 == 0)
|
|
{
|
|
if (p2 == 0)
|
|
{
|
|
TOUT_OP(0, Output1, 1000);
|
|
TOUT_OP(1, Output2, 1000);
|
|
TOUT_OP(2, Output3, 1000);
|
|
TOUT_OP(3, Output4, 1000);
|
|
TOUT_OP(4, Output5, 1000);
|
|
TOUT_OP(5, Output6, 1000);
|
|
TOUT_OP(6, Output7, 1000);
|
|
TOUT_OP(7, Output8, 1000);
|
|
}
|
|
else if (p2 == 1)
|
|
{
|
|
|
|
}
|
|
}
|
|
else if (p1 < 100)
|
|
{
|
|
switch(p1)
|
|
{
|
|
case 1:
|
|
TOUT_OP(0, Output1, 1000);
|
|
break;
|
|
case 2:
|
|
TOUT_OP(1, Output2, 1000);
|
|
break;
|
|
case 3:
|
|
TOUT_OP(2, Output3, 1000);
|
|
break;
|
|
case 4:
|
|
TOUT_OP(3, Output4, 1000);
|
|
break;
|
|
case 5:
|
|
TOUT_OP(4, Output5, 1000);
|
|
break;
|
|
case 6:
|
|
TOUT_OP(5, Output6, 1000);
|
|
break;
|
|
case 7:
|
|
TOUT_OP(6, Output7, 1000);
|
|
break;
|
|
case 8:
|
|
TOUT_OP(7, Output8, 1000);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------
|
|
|
|
void SetInputNameString(const void* pDat)
|
|
{
|
|
memcpy(g_inputName, pDat, INPUT_NUM*INPUT_STR_LEN);
|
|
}
|
|
|
|
void SetOutputNameString(const void* pDat)
|
|
{
|
|
memcpy(g_outputName, pDat, OUTPUT_NUM*OUTPUT_STR_LEN);
|
|
}
|