Dependencies:
BufferedSerial
ATParser.h
- Committer:
- geky
- Date:
- 2015-07-15
- Revision:
- 0:c741e144517c
- Child:
- 1:66a14afe650a
File content as of revision 0:c741e144517c:
/* 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, ...);
};