Mbed OS Reference
Loading...
Searching...
No Matches
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 set_delimiter (const char *output_delimiter)
 Sets string of characters to use as line delimiters. More...
 
void debug_on (uint8_t on)
 Allows traces from modem to be turned on or off. 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 remove_oob (const char *prefix)
 remove_oob Removes oob callback handler 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:

BufferedSerial serial = BufferedSerial(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");
Parser class for parsing AT commands.
Definition: ATCmdParser.h:56
int read(char *data, int size)
Read an array of bytes from the underlying stream.
bool send(const char *command,...) MBED_PRINTF_METHOD(1
Sends an AT command.
bool recv(const char *response,...) MBED_SCANF_METHOD(1
Receive an AT response.
Class providing buffered UART communication functionality using separate circular buffer for send and...

Definition at line 56 of file ATCmdParser.h.

Constructor & Destructor Documentation

◆ ATCmdParser()

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.

◆ ~ATCmdParser()

Destructor.

Definition at line 124 of file ATCmdParser.h.

Member Function Documentation

◆ set_timeout()

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.

◆ set_delimiter()

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 150 of file ATCmdParser.h.

◆ debug_on()

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 161 of file ATCmdParser.h.

◆ send()

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

◆ recv()

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

◆ putc()

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

◆ getc()

int getc ( )

Get a single byte from the underlying stream.

Returns
The byte that was read or -1 during a timeout

◆ write()

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

◆ read()

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

◆ printf()

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

◆ scanf()

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

◆ oob()

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

◆ remove_oob()

void remove_oob ( const char *  prefix)

remove_oob Removes oob callback handler

Parameters
prefixPrefix to identify oob to be removed.

◆ flush()

void flush ( )

Flushes the underlying stream.

◆ abort()

void abort ( )

Abort current recv.

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

◆ process_oob()

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