dev
Dependencies: MTS-Serial libmDot-mbed5
Fork of Dot-AT-Firmware by
Diff: CommandTerminal/CmdWakePin.cpp
- Revision:
- 4:666017851052
- Child:
- 9:ff62b20f7000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CommandTerminal/CmdWakePin.cpp Tue Aug 18 11:21:43 2015 -0500 @@ -0,0 +1,50 @@ +#include "CmdWakePin.h" + +CmdWakePin::CmdWakePin(mDot* dot, mts::MTSSerial& serial) +: + Command(dot, "Wake Pin", "AT+WP", "Wakeup DIO pin of sleep mode (default: DI8), deep-sleep uses DIO7"), + _serial(serial) { + _help = std::string(text()) + ": " + std::string(desc()); + _usage = "(2-8)"; + _queryable = true; +} + +uint32_t CmdWakePin::action(std::vector<std::string> args) { + if (args.size() == 1) { + if (_dot->getVerbose()) + _serial.writef("%s: ", name()); + + _serial.writef("%s\r\n", mDot::pinName2Str(_dot->getWakePin()).c_str()); + } else if (args.size() == 2) { + int32_t code; + uint32_t pin; + sscanf(args[1].c_str(), "%lu", &pin); + + _dot->setWakePin(mDot::pinNum2Name(pin)); + } + + return 0; +} + +bool CmdWakePin::verify(std::vector<std::string> args) { + if (args.size() == 1) + return true; + + if (args.size() == 2) { + uint32_t pin; + if (sscanf(args[1].c_str(), "%lu", &pin) != 1) { + setErrorMessage("Invalid argument"); + return false; + } + + if (pin < 2 || pin > 8) { + setErrorMessage("Invalid pin, expects (2-8)"); + return false; + } + + return true; + } + + setErrorMessage("Invalid arguments"); + return false; +}