Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Embed: (wiki syntax)

« Back to documentation index

ATCmdParser Class Reference

Parser class for parsing AT commands. More...

#include <ATCmdParser.h>

Inherits NonCopyable< ATCmdParser >.

Public Member Functions

 ATCmdParser (FileHandle *fh, const char *output_delimiter="\r", int buffer_size=256, int timeout=8000, bool debug=false)
 Constructor.
 ~ATCmdParser ()
 Destructor.
void set_timeout (int timeout)
 Allows timeout to be changed between commands.
 MBED_DEPRECATED_SINCE ("mbed-os-5.5.0","Replaced with set_timeout for consistency") void setTimeout(int timeout)
 For backward compatibility.
void set_delimiter (const char *output_delimiter)
 Sets string of characters to use as line delimiters.
 MBED_DEPRECATED_SINCE ("mbed-os-5.5.0","Replaced with set_delimiter for consistency") void setDelimiter(const char *output_delimiter)
 For backwards compatibility.
void debug_on (uint8_t on)
 Allows traces from modem to be turned on or off.
 MBED_DEPRECATED_SINCE ("mbed-os-5.5.0","Replaced with debug_on for consistency") void debugOn(uint8_t on)
 For backward compatibility.
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.
int putc (char c)
 Write a single byte to the underlying stream.
int getc ()
 Get a single byte from the underlying stream.
int write (const char *data, int size)
 Write an array of bytes to the underlying stream.
int read (char *data, int size)
 Read an array of bytes from the underlying stream.
int printf (const char *format,...) MBED_PRINTF_METHOD(1
 Direct printf to underlying stream.
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.
void oob (const char *prefix, mbed::Callback< void()> func)
 Attach a callback for out-of-band data.
void remove_oob (const char *prefix)
 remove_oob Removes oob callback handler
void flush ()
 Flushes the underlying stream.
void abort ()
 Abort current recv.
bool process_oob (void)
 Process out-of-band data.

Private Member Functions

 MBED_DEPRECATED ("Invalid copy construction of a NonCopyable resource.") NonCopyable(const NonCopyable &)
 NonCopyable copy constructor.
 MBED_DEPRECATED ("Invalid copy assignment of a NonCopyable resource.") NonCopyable &operator
 NonCopyable copy assignment operator.

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.

~ATCmdParser (  )

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.

Definition at line 384 of file ATCmdParser.cpp.

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 flush (  )

Flushes the underlying stream.

Definition at line 75 of file ATCmdParser.cpp.

int getc (  )

Get a single byte from the underlying stream.

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

Definition at line 60 of file ATCmdParser.cpp.

MBED_DEPRECATED_SINCE ( "mbed-os-5.5.0"  ,
"Replaced with set_delimiter for consistency"   
) const

For backwards compatibility.

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

MBED_DEPRECATED_SINCE ( "mbed-os-5.5.0"  ,
"Replaced with set_timeout for consistency"   
)

For backward compatibility.

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

MBED_DEPRECATED_SINCE ( "mbed-os-5.5.0"  ,
"Replaced with debug_on for consistency"   
)

For backward compatibility.

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

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

Definition at line 318 of file ATCmdParser.cpp.

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

Definition at line 389 of file ATCmdParser.cpp.

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

Definition at line 46 of file ATCmdParser.cpp.

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

Definition at line 96 of file ATCmdParser.cpp.

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

Definition at line 345 of file ATCmdParser.cpp.

void remove_oob ( const char *  prefix )

remove_oob Removes oob callback handler

Parameters:
prefixPrefix to identify oob to be removed.

Definition at line 365 of file ATCmdParser.cpp.

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

Definition at line 327 of file ATCmdParser.cpp.

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

Definition at line 336 of file ATCmdParser.cpp.

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.

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

Definition at line 85 of file ATCmdParser.cpp.