#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; // 状态寄存器清空 // } //}