324 lines
8.9 KiB
C
324 lines
8.9 KiB
C
|
#include "main.h"
|
||
|
|
||
|
unsigned char const board[] = "Sleeping mattress"; // 版本号
|
||
|
unsigned char const ver[] = "V0.0.2"; // 版本号
|
||
|
unsigned char network[5] = {0XA5, 0X5A, 0X00, 0X01, 0XAA}; // 配网指令
|
||
|
unsigned char SC_Cmd[5] = {0XA5, 0X5A, 0X00, 0X01, 0XCC}; // SC指令
|
||
|
unsigned char Start_Cmd[5] = {0XA5, 0X5A, 0X00, 0X01, 0XDD}; // 启动配网指令
|
||
|
unsigned char myScan[5] = {0XA5, 0X5A, 0X00, 0X01, 0XEE}; // 上电扫描指令
|
||
|
unsigned char myReset[5] = {0XA5, 0X5A, 0X00, 0X01, 0XFF}; // 复位指令
|
||
|
unsigned char const data_str[] = __DATE__; // 程序编译系统日期
|
||
|
unsigned char const time_str[] = __TIME__; // 程序编译系统时间
|
||
|
|
||
|
//int do_help(cmd_tbl_t *cmdtp, int argc, char *argv[]);
|
||
|
//int do_sys(cmd_tbl_t *cmdtp, int argc, char *argv[]);
|
||
|
//int do_cal(cmd_tbl_t *cmdtp, int argc, char *argv[]);
|
||
|
//int do_rename(cmd_tbl_t *cmdtp, int argc, char *argv[]);
|
||
|
///**
|
||
|
// * @brief 系统命令结构体数组,添加命令添加结构体即可
|
||
|
// */
|
||
|
//struct cmd_tbl_s sys_cmd_tab[] =
|
||
|
// {
|
||
|
// {"help", CFG_MAXARGS, do_help,
|
||
|
// "help - Print online help\r\n"},
|
||
|
// {"sys", CFG_MAXARGS, do_sys,
|
||
|
// "sys - sys check\r\n"},
|
||
|
// {"cal", CFG_MAXARGS, do_cal,
|
||
|
// "cal - cal set\r\n"},
|
||
|
//};
|
||
|
//#define __cmd_start (sys_cmd_tab[0])
|
||
|
//#define __cmd_end (sys_cmd_tab[sizeof(sys_cmd_tab) / sizeof(struct cmd_tbl_s)])
|
||
|
|
||
|
//char system_command_print(char *argv[])
|
||
|
//{
|
||
|
// char value = 0;
|
||
|
// if (strncmp(argv[1], "version", 7) == 0)
|
||
|
// {
|
||
|
// value = 1;
|
||
|
// }
|
||
|
// else if (strncmp(argv[1], "upgrade", 7) == 0)
|
||
|
// {
|
||
|
// value = 2;
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// value = 99;
|
||
|
// }
|
||
|
// return value;
|
||
|
//}
|
||
|
//int do_help(cmd_tbl_t *cmdtp, int argc, char *argv[])
|
||
|
//{
|
||
|
// switch (argc)
|
||
|
// {
|
||
|
// case 1:
|
||
|
// {
|
||
|
// printf("sys - sys check\r\n");
|
||
|
// printf("cal - cal set\r\n");
|
||
|
// }
|
||
|
// break;
|
||
|
// default:
|
||
|
// goto Parametre_error;
|
||
|
// }
|
||
|
// return 0;
|
||
|
//Parametre_error:
|
||
|
// printf("Parametre error\r\n");
|
||
|
// return 0;
|
||
|
//}
|
||
|
|
||
|
//int do_sys(cmd_tbl_t *cmdtp, int argc, char *argv[])
|
||
|
//{
|
||
|
// char val_flg = 0;
|
||
|
// switch (argc)
|
||
|
// {
|
||
|
// case 1:
|
||
|
// {
|
||
|
// printf("sys version\r\n");
|
||
|
// printf("sys upgrade\r\n");
|
||
|
// printf("version is v.%d,%d,%d\r\n", version[5], version[6], version[7]);
|
||
|
// }
|
||
|
// break;
|
||
|
// case 2:
|
||
|
// {
|
||
|
// val_flg = system_command_print(argv);
|
||
|
// switch (val_flg)
|
||
|
// {
|
||
|
// case 1:
|
||
|
// printf("%s,%s,%s,%s\r\n", board, ver, data_str, time_str);
|
||
|
// printf("version is v.%d,%d,%d\r\n", version[5], version[6], version[7]);
|
||
|
// break;
|
||
|
// case 2:
|
||
|
// printf("go upgrade");
|
||
|
// upgradeVersion();
|
||
|
// break;
|
||
|
// case 99:
|
||
|
// goto Parametre_error;
|
||
|
// }
|
||
|
// }
|
||
|
// break;
|
||
|
// default:
|
||
|
// goto Parametre_error;
|
||
|
// }
|
||
|
// return 0;
|
||
|
//Parametre_error:
|
||
|
// printf("Parametre error\r\n");
|
||
|
// return 0;
|
||
|
//}
|
||
|
|
||
|
//int do_cal(cmd_tbl_t *cmdtp, int argc, char *argv[])
|
||
|
//{
|
||
|
// switch (argc)
|
||
|
// {
|
||
|
// case 1:
|
||
|
// {
|
||
|
// }
|
||
|
// break;
|
||
|
// default:
|
||
|
// goto Parametre_error;
|
||
|
// }
|
||
|
// return 0;
|
||
|
//Parametre_error:
|
||
|
// printf("Parametre error\r\n");
|
||
|
// return 0;
|
||
|
//}
|
||
|
|
||
|
///**
|
||
|
// * @brief 在 sys_cmd_tab[] 结构体数组中查找 name
|
||
|
// * @param cmd: 传入的str
|
||
|
// * @retval 找到的结构体数组
|
||
|
// * NULL,无匹配
|
||
|
// */
|
||
|
//cmd_tbl_t *find_cmd(const char *cmd)
|
||
|
//{
|
||
|
// cmd_tbl_t *cmdtp;
|
||
|
// cmd_tbl_t *cmdtp_temp = &__cmd_start; /*Init value */
|
||
|
// const char *p;
|
||
|
// int len;
|
||
|
// int n_found = 0;
|
||
|
// /*
|
||
|
// * Some commands allow length modifiers (like "cp.b");
|
||
|
// * compare command name only until first dot.
|
||
|
// */
|
||
|
// len = ((p = strchr(cmd, '.')) == NULL) ? strlen(cmd) : (p - cmd);
|
||
|
// for (cmdtp = &__cmd_start; cmdtp != &__cmd_end; cmdtp++)
|
||
|
// {
|
||
|
// if (strncmp(cmd, cmdtp->name, len) == 0)
|
||
|
// {
|
||
|
// if (len == strlen(cmdtp->name))
|
||
|
// return cmdtp; /* full match */
|
||
|
|
||
|
// cmdtp_temp = cmdtp; /* abbreviated command ? */
|
||
|
// n_found++;
|
||
|
// }
|
||
|
// }
|
||
|
// if (n_found == 1)
|
||
|
// { /* exactly one match */
|
||
|
// return cmdtp_temp;
|
||
|
// }
|
||
|
// return NULL; /* not found or ambiguous command */
|
||
|
//}
|
||
|
///**
|
||
|
// * @brief 命令分割提取
|
||
|
// * @param line: 传入的str
|
||
|
// * argv[]:分割后的字符串
|
||
|
// * @retval 0,成功处理
|
||
|
// * 其他,错误代码
|
||
|
// */
|
||
|
//int parse_line(char *line, char *argv[])
|
||
|
//{
|
||
|
// int nargs = 0;
|
||
|
//#ifdef DEBUG_PARSER
|
||
|
// printf("parse_line: \"%s\"\r\n", line);
|
||
|
//#endif
|
||
|
// while (nargs < CFG_MAXARGS)
|
||
|
// {
|
||
|
// /* skip any white space */
|
||
|
// while ((*line == ' ') || (*line == '\t'))
|
||
|
// {
|
||
|
// ++line;
|
||
|
// }
|
||
|
// if (*line == '\0')
|
||
|
// { /* end of line, no more args */
|
||
|
// argv[nargs] = NULL;
|
||
|
//#ifdef DEBUG_PARSER
|
||
|
// printf("parse_line: nargs=%d\r\n", nargs);
|
||
|
//#endif
|
||
|
// return (nargs);
|
||
|
// }
|
||
|
// argv[nargs++] = line; /* begin of argument string */
|
||
|
// /* find end of string */
|
||
|
// while (*line && (*line != ' ') && (*line != '\t'))
|
||
|
// {
|
||
|
// ++line;
|
||
|
// }
|
||
|
// if (*line == '\0')
|
||
|
// { /* end of line, no more args */
|
||
|
// argv[nargs] = NULL;
|
||
|
//#ifdef DEBUG_PARSER
|
||
|
// printf("parse_line: nargs=%d\r\n", nargs);
|
||
|
//#endif
|
||
|
// return (nargs);
|
||
|
// }
|
||
|
// *line++ = '\0'; /* terminate current arg */
|
||
|
// }
|
||
|
|
||
|
// printf("** Too many args (max. %d) **\r\n", CFG_MAXARGS);
|
||
|
|
||
|
//#ifdef DEBUG_PARSER
|
||
|
// printf("parse_line: nargs=%d\r\n", nargs);
|
||
|
//#endif
|
||
|
// return (nargs);
|
||
|
//}
|
||
|
///**
|
||
|
// * @brief 命令解释函数
|
||
|
// * @param cmd: 传入的字符串
|
||
|
// * @retval 0,成功处理
|
||
|
// * 其他,错误代码
|
||
|
// */
|
||
|
//int run_sys_command(const char *cmd)
|
||
|
//{
|
||
|
// cmd_tbl_t *cmdtp;
|
||
|
// char cmdbuf[CFG_CBSIZE]; /* working copy of cmd */
|
||
|
// char *token; /* start of token in cmdbuf */
|
||
|
// char *sep; /* end of token (separator) in cmdbuf */
|
||
|
// char *str = cmdbuf;
|
||
|
// char *argv[CFG_MAXARGS + 1]; /* NULL terminated */
|
||
|
// int argc, inquotes;
|
||
|
// int repeatable = 1;
|
||
|
// int rc = 0;
|
||
|
|
||
|
// if (!cmd || !*cmd)
|
||
|
// {
|
||
|
// return -1; /* empty command */
|
||
|
// }
|
||
|
|
||
|
// if (strlen(cmd) >= CFG_CBSIZE)
|
||
|
// {
|
||
|
// printf("## Command too long!\r\n");
|
||
|
// return -1;
|
||
|
// }
|
||
|
// strcpy(cmdbuf, cmd);
|
||
|
// /* Process separators and check for invalid
|
||
|
// * repeatable commands
|
||
|
// */
|
||
|
//#ifdef DEBUG_PARSER
|
||
|
// printf("[PROCESS_SEPARATORS] %s\r\n", cmd);
|
||
|
//#endif
|
||
|
// while (*str)
|
||
|
// {
|
||
|
// /*
|
||
|
// * Find separator, or string end
|
||
|
// * Allow simple escape of ';' by writing "\;"
|
||
|
// */
|
||
|
// for (inquotes = 0, sep = str; *sep; sep++)
|
||
|
// {
|
||
|
// if ((*sep == '\'') &&
|
||
|
// (*(sep - 1) != '\\'))
|
||
|
// inquotes = !inquotes;
|
||
|
|
||
|
// if (!inquotes &&
|
||
|
// (*sep == ';') && /* separator */
|
||
|
// (sep != str) && /* past string start */
|
||
|
// (*(sep - 1) != '\\')) /* and NOT escaped */
|
||
|
// break;
|
||
|
// }
|
||
|
// /*
|
||
|
// * Limit the token to data between separators
|
||
|
// */
|
||
|
// token = str;
|
||
|
// if (*sep)
|
||
|
// {
|
||
|
// str = sep + 1; /* start of command for next pass */
|
||
|
// *sep = '\0';
|
||
|
// }
|
||
|
// else
|
||
|
// str = sep; /* no more commands for next pass */
|
||
|
//#ifdef DEBUG_PARSER
|
||
|
// printf("token: \"%s\"\r\n", token);
|
||
|
//#endif
|
||
|
|
||
|
// /* Extract arguments */
|
||
|
// if ((argc = parse_line(token, argv)) == 0)
|
||
|
// {
|
||
|
// rc = -1; /* no command at all */
|
||
|
// continue;
|
||
|
// }
|
||
|
|
||
|
// /* Look up command in command table */
|
||
|
// if ((cmdtp = find_cmd(argv[0])) == NULL)
|
||
|
// {
|
||
|
// printf("Unknown command '%s' - try 'help'\r\n", argv[0]);
|
||
|
// rc = -1; /* give up after bad command */
|
||
|
// continue;
|
||
|
// }
|
||
|
// /* found - check max args */
|
||
|
// if (argc > cmdtp->maxargs)
|
||
|
// {
|
||
|
// printf("Usage:\r\n%s\r\n", cmdtp->usage);
|
||
|
// rc = -1;
|
||
|
// continue;
|
||
|
// }
|
||
|
// /* OK - call function to do the command */
|
||
|
// if ((cmdtp->cmd)(cmdtp, argc, argv) != 0)
|
||
|
// {
|
||
|
// rc = -1;
|
||
|
// }
|
||
|
// }
|
||
|
// return rc ? rc : repeatable;
|
||
|
//}
|
||
|
///**
|
||
|
// * @brief 处理系统命令
|
||
|
// * @param void
|
||
|
// * @retval void
|
||
|
// */
|
||
|
//void sys_cmd_exe(void)
|
||
|
//{
|
||
|
// int len = 0;
|
||
|
// if (USART2_RX_STA & 0x8000) // 串口接收完成
|
||
|
// {
|
||
|
// len = USART2_RX_STA & 0x3fff; // 得到此次接收到的数据长度
|
||
|
// USART2_RX_BUF[len] = '\0'; // 在末尾加入结束符.
|
||
|
// run_sys_command((const char *)USART2_RX_BUF);
|
||
|
// USART2_RX_STA = 0; // 状态寄存器清空
|
||
|
// }
|
||
|
//}
|