Dependencies:
BufferedSerial
Diff: ATParser.h
- Revision:
- 0:c741e144517c
- Child:
- 1:66a14afe650a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ATParser.h Wed Jul 15 22:39:25 2015 +0000
@@ -0,0 +1,88 @@
+/* Copyright (c) 2015 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @section DESCRIPTION
+ *
+ * Parser for the AT command syntax
+ *
+ */
+
+#include "mbed.h"
+
+
+/**
+* The ATParser class wraps information about the serial in use
+*/
+class ATParser {
+private:
+ // Serial information
+ RawSerial *_serial;
+ int _buffer_size;
+ char *_buffer;
+ int _timeout;
+
+ // Helper methods for putc/getc with timeout
+ int _putc(char c);
+ int _getc();
+
+ // Flush used to clear serial connection
+ void _flush();
+
+ // Helper methods for reading/writing lines with
+ // timeout and buffer limitations
+ bool _putline(const char *line);
+ bool _getline(int size, char *line);
+
+public:
+ /**
+ * Constructor
+ *
+ * @param serial serial interface to use for AT commands
+ * @param timeout timeout of the connection
+ */
+ ATParser(RawSerial *serial, int buffer_size = 256, int timeout = 3000) :
+ _serial(serial),
+ _buffer_size(buffer_size),
+ _timeout(timeout) {
+ _buffer = new char[buffer_size];
+ }
+
+ /**
+ * Destructor
+ */
+ ~ATParser() {
+ delete [] _buffer;
+ }
+
+ /**
+ * Allows timeout to be changed between commands
+ *
+ * @param timeout timeout of the connection
+ */
+ void setTimeout(int timeout) {
+ _timeout = timeout;
+ }
+
+ /**
+ * Issue AT commands with specified command and expected response
+ *
+ * @param command printf-like format string of command to send
+ * @param response scanf-like format string of response to parse
+ * @param ... all printf-like arguments to insert into command followed by
+ * all scanf-like pointers to destinations for response values
+ * @return true if response is successfully matched
+ */
+ bool command(const char *command, const char *response, ...);
+};
+
\ No newline at end of file