Mistake on this page?
Report an issue in GitHub or email us
Data Structures | Public Member Functions
ATCmdParser Class Reference

Parser class for parsing AT commands. More...

#include <ATCmdParser.h>

Inheritance diagram for ATCmdParser:
NonCopyable< ATCmdParser >

Public Member Functions

 ATCmdParser (FileHandle *fh, const char *output_delimiter="\r", int buffer_size=256, int timeout=8000, bool debug=false)
 Constructor. More...
 
 ~ATCmdParser ()
 Destructor. More...
 
void set_timeout (int timeout)
 Allows timeout to be changed between commands. More...
 
void setTimeout (int timeout)
 For backward compatibility. More...
 
void set_delimiter (const char *output_delimiter)
 Sets string of characters to use as line delimiters. More...
 
void setDelimiter (const char *output_delimiter)
 For backwards compatibility. More...
 
void debug_on (uint8_t on)
 Allows traces from modem to be turned on or off. More...
 
void debugOn (uint8_t on)
 For backward compatibility. More...
 
bool send (const char *command,...) MBED_PRINTF_METHOD(1
 Sends an AT command. More...
 
bool recv (const char *response,...) MBED_SCANF_METHOD(1
 Receive an AT response. More...
 
int putc (char c)
 Write a single byte to the underlying stream. More...
 
int getc ()
 Get a single byte from the underlying stream. More...
 
int write (const char *data, int size)
 Write an array of bytes to the underlying stream. More...
 
int read (char *data, int size)
 Read an array of bytes from the underlying stream. More...
 
int printf (const char *format,...) MBED_PRINTF_METHOD(1
 Direct printf to underlying stream. More...
 
int scanf (const char *format,...) MBED_SCANF_METHOD(1
 Direct scanf on underlying stream This function does not itself match whitespace in its format string, so
is not significant to it. More...
 
void oob (const char *prefix, mbed::Callback< void()> func)
 Attach a callback for out-of-band data. More...
 
void flush ()
 Flushes the underlying stream. More...
 
void abort ()
 Abort current recv. More...
 
bool process_oob (void)
 Process out-of-band data. More...
 

Detailed Description

Parser class for parsing AT commands.

Here are some examples:

UARTSerial serial = UARTSerial(D1, D0);
ATCmdParser at = ATCmdParser(&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");

Definition at line 56 of file ATCmdParser.h.

Constructor & Destructor Documentation

ATCmdParser ( FileHandle fh,
const char *  output_delimiter = "\r",
int  buffer_size = 256,
int  timeout = 8000,
bool  debug = false 
)

Constructor.

Parameters
fhA FileHandle to the digital interface, used for AT commands
output_delimiterEnd of command-line termination
buffer_sizeSize of internal buffer for transaction
timeoutTimeout of the connection
debugTurns on/off debug output for AT commands

Definition at line 111 of file ATCmdParser.h.

Destructor.

Definition at line 124 of file ATCmdParser.h.

Member Function Documentation

void abort ( )

Abort current recv.

Can be called from out-of-band handler to interrupt the current recv operation.

void debug_on ( uint8_t  on)

Allows traces from modem to be turned on or off.

Parameters
onSet as 1 to turn on traces and 0 to disable traces.

Definition at line 193 of file ATCmdParser.h.

void debugOn ( uint8_t  on)

For backward compatibility.

Deprecated:
Do not use this function. This function has been replaced with debug_on for consistency.

Allows traces from modem to be turned on or off

Parameters
onSet as 1 to turn on traces and 0 to disable traces.

Definition at line 207 of file ATCmdParser.h.

void flush ( )

Flushes the underlying stream.

int getc ( )

Get a single byte from the underlying stream.

Returns
The byte that was read or -1 during a timeout
void oob ( const char *  prefix,
mbed::Callback< void()>  func 
)

Attach a callback for out-of-band data.

Parameters
prefixString on when to initiate callback
funcCallback to call when string is read
Note
out-of-band data is only processed during a scanf call
int printf ( const char *  format,
  ... 
)

Direct printf to underlying stream.

See also
printf
Parameters
formatFormat string to pass to printf
...Variable arguments to printf
Returns
number of bytes written or -1 on failure
bool process_oob ( void  )

Process out-of-band data.

Process out-of-band data in the receive buffer. This function returns immediately if there is no data to process.

Returns
true if out-of-band data processed, false otherwise
int putc ( char  c)

Write a single byte to the underlying stream.

Parameters
cThe byte to write
Returns
The byte that was written or -1 during a timeout
int read ( char *  data,
int  size 
)

Read an array of bytes from the underlying stream.

Parameters
dataThe buffer for filling the read bytes
sizeNumber of bytes to read
Returns
number of bytes read or -1 on failure
bool recv ( const char *  response,
  ... 
)

Receive an AT response.

Receives a formatted response using scanf style formatting

See also
scanf

Responses are parsed line at a time. Any received data that does not match the response is ignored until a timeout occurs.

Parameters
responsescanf-like format string of response to expect
...all scanf-like arguments to extract from response
Returns
true only if response is successfully matched
int scanf ( const char *  format,
  ... 
)

Direct scanf on underlying stream This function does not itself match whitespace in its format string, so
is not significant to it.

It should be used only when certain string is needed or format ends with certain character, otherwise it will fill the output with one character.

See also
scanf
Parameters
formatFormat string to pass to scanf
...Variable arguments to scanf
Returns
number of bytes read or -1 on failure
bool send ( const char *  command,
  ... 
)

Sends an AT command.

Sends a formatted command using printf style formatting

See also
printf
Parameters
commandprintf-like format string of command to send which is appended with a newline
...all printf-like arguments to insert into command
Returns
true only if command is successfully sent
void set_delimiter ( const char *  output_delimiter)

Sets string of characters to use as line delimiters.

Parameters
output_delimiterString of characters to use as line delimiters

Definition at line 167 of file ATCmdParser.h.

void set_timeout ( int  timeout)

Allows timeout to be changed between commands.

Parameters
timeoutATCmdParser APIs (read/write/send/recv ..etc) throw an error if no response is received in timeout duration

Definition at line 140 of file ATCmdParser.h.

void setDelimiter ( const char *  output_delimiter)

For backwards compatibility.

Deprecated:
Do not use this function. This function has been replaced with set_delimiter for consistency.

Please use set_delimiter(const char *) API only from now on. Sets string of characters to use as line delimiters

Parameters
output_delimiterstring of characters to use as line delimiters

Definition at line 183 of file ATCmdParser.h.

void setTimeout ( int  timeout)

For backward compatibility.

Deprecated:
Do not use this function. This function has been replaced with set_timeout for consistency.

Please use set_timeout(int) API only from now on. Allows timeout to be changed between commands

Parameters
timeoutATCmdParser APIs (read/write/send/recv ..etc) throw an error if no response is received in timeout duration

Definition at line 157 of file ATCmdParser.h.

int write ( const char *  data,
int  size 
)

Write an array of bytes to the underlying stream.

Parameters
dataThe array of bytes to write
sizeNumber of bytes to write
Returns
number of bytes written or -1 on failure
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.