Parser for AT commands and similar protocols
Diff: ATParser.h
- Revision:
- 8:91515b168c70
- Parent:
- 7:d1b193880af1
- Child:
- 9:9bcb87c27208
--- a/ATParser.h Mon Jul 20 18:23:54 2015 +0000 +++ b/ATParser.h Mon Jul 20 20:56:30 2015 +0000 @@ -25,8 +25,22 @@ /** -* The ATParser class wraps information about the serial in use -*/ + * Parser class for parsing AT commands + * + * Here are some examples: + * @code + * ATParser at = ATParser(serial, "\r\n"); + * int value; + * char buffer[100]; + * + * at.send("AT") && at.recv("OK"); + * at.send("AT+CWMODE=%d", 3) && at.recv("OK"); + * at.send("AT+CWMODE?") && at.recv("+CWMODE:%d\r\nOK", &value); + * at.recv("+IPD,%d:", &value); + * at.read(buffer, value); + * at.recv("OK"); + * @endcode + */ class ATParser { private: // Serial information @@ -48,8 +62,8 @@ * @param timeout timeout of the connection * @param delimiter string of characters to use as line delimiters */ - ATParser(BufferedSerial *serial, int buffer_size = 256, int timeout = 8000, - const char *delimiter = "\r\n") : + ATParser(BufferedSerial *serial, const char *delimiter = "\r\n", + int buffer_size = 256, int timeout = 8000) : _serial(serial), _buffer_size(buffer_size) { _buffer = new char[buffer_size]; @@ -113,29 +127,6 @@ */ bool recv(const char *response, ...); bool vrecv(const char *response, va_list args); - - /** - * Issue AT commands - * - * Issues formatted commands and parses formatted responses. - * A command call is identical to a send call followed by a recv call. - * @see send, recv - * - * Here are some examples: - * @code - * at.command("AT", "OK"); - * at.command("AT+CWMODE=%d", "OK", 3); - * at.command("AT+CWMODE?", "+CWMODE:%d\r\nOK", &result); - * @endcode - * - * @param command printf-like format string of command to send - * @param response scanf-like format string of response to expect - * @param ... all printf-like arguments to insert into command followed by - * all scanf-like arguments to extract from response - * @return true only if response is successfully matched - */ - bool command(const char *command, const char *response, ...); - bool vcommand(const char *command, const char *response, va_list args); /** * Write a single byte to the underlying stream