#include #include "cmd.h" #include "pwm.h" CmdServer::CmdServer() : cmd(""), params("") { } void CmdServer::begin() { } void CmdServer::exec() { static uint8_t state = 0; bool done = false; char ch; while ((ch = Serial.read()) != -1) { switch (state) { case 0: if ((ch != ' ') && (ch != '\n')) { cmd += ch; } else if (ch == '\n') { done = true; } else { state = 1; } break; case 1: if (ch != '\n') { params += ch; } else { done = true; state = 0; } break; } if (done) { parseCommand(); cmd = ""; params = ""; } } } void CmdServer::parseCommand() { int space = params.indexOf(' '); String p1 = ""; char pb1[128]; if (space != -1) { params.toCharArray(pb1, 128, space+1); } if (cmd.equalsIgnoreCase("help")) { Serial.println("Help: show, u, p, i, d"); } else if (cmd.equalsIgnoreCase("show")) { Serial.print("U_Des = "); Serial.println(getUDes()); Serial.print("U_Cur = "); Serial.println(getUCur()); Serial.print("Dutycycle = "); Serial.print(getDutycycle()); Serial.println("%"); Serial.print("p = "); Serial.println(getP); Serial.print("i = "); Serial.println(getI); Serial.print("d = "); Serial.println(getD); } else if (cmd.equalsIgnoreCase("u") && (space != -1)) { float v = atof(pb1); setUDes(v); } else if (cmd.equalsIgnoreCase("p") && (space != -1)) { float v = atof(pb1); setP(v); } else if (cmd.equalsIgnoreCase("i") && (space != -1)) { float v = atof(pb1); setI(v); } else if (cmd.equalsIgnoreCase("d") && (space != -1)) { float v = atof(pb1); setD(v); } else {} m_client.println("command not found"); } }