Loading...
Searching...
No Matches

AT (Hayes) library interface. More...

Detailed Description

AT (Hayes) library interface.

Author
Kaspar Schleiser kaspa.nosp@m.r@sc.nosp@m.hleis.nosp@m.er.d.nosp@m.e

Definition in file at.h.

#include <stdint.h>
#include <unistd.h>
#include <stdbool.h>
#include "isrpipe.h"
#include "periph/uart.h"
#include "clist.h"
#include "kernel_defines.h"
#include "event.h"
+ Include dependency graph for at.h:

Go to the source code of this file.

Data Structures

struct  at_urc_t
 Unsolicited result code data structure. More...
 
struct  at_dev_t
 AT device structure. More...
 
struct  at_dev_init_t
 AT device initialization parameters. More...
 

Macros

#define CONFIG_AT_SEND_EOL   "\r"
 End of line character to send after the AT command.
 
#define CONFIG_AT_SEND_SKIP_ECHO
 Enable this to disable check for echo after an AT command is sent.
 
#define AT_RECV_EOL_1   "\r"
 1st end of line character received (S3 aka CR character for a modem).
 
#define AT_RECV_EOL_2   "\n"
 1st end of line character received (S4 aka LF character for a modem).
 
#define AT_RECV_EOL   AT_RECV_EOL_1 AT_RECV_EOL_2
 convenience macro for the EOL sequence sent by the DCE
 
#define CONFIG_AT_RECV_OK   "OK"
 default OK reply of an AT device.
 
#define CONFIG_AT_RECV_ERROR   "ERROR"
 default ERROR reply of an AT device.
 
#define AT_ERR_EXTENDED   200
 Error cause can be further investigated.
 
#define AT_SEND_EOL_LEN   (sizeof(CONFIG_AT_SEND_EOL) - 1)
 Shortcut for getting send end of line length.
 

Typedefs

typedef void(* at_urc_cb_t) (void *arg, const char *code)
 Unsolicited result code callback.
 

Functions

static char const * at_get_err_info (at_dev_t *dev)
 Get extended error information of the last command sent.
 
int at_dev_init (at_dev_t *dev, at_dev_init_t const *init)
 Initialize AT device struct.
 
int at_send_cmd_wait_ok (at_dev_t *dev, const char *command, uint32_t timeout)
 Simple command helper.
 
int at_send_cmd_wait_prompt (at_dev_t *dev, const char *command, uint32_t timeout)
 Send AT command, wait for a prompt.
 
ssize_t at_send_cmd_get_resp (at_dev_t *dev, const char *command, char *resp_buf, size_t len, uint32_t timeout)
 Send AT command, wait for response.
 
ssize_t at_send_cmd_get_resp_wait_ok (at_dev_t *dev, const char *command, const char *resp_prefix, char *resp_buf, size_t len, uint32_t timeout)
 Send AT command, wait for response plus OK.
 
ssize_t at_send_cmd_get_lines (at_dev_t *dev, const char *command, char *resp_buf, size_t len, uint32_t timeout)
 Send AT command, wait for multiline response.
 
int at_expect_bytes (at_dev_t *dev, const char *bytes, uint32_t timeout)
 Expect bytes from device.
 
int at_wait_bytes (at_dev_t *dev, const char *bytes, uint32_t timeout)
 Repeatedly calls at_expect_bytes() until a match or timeout occurs.
 
int at_recv_bytes_until_string (at_dev_t *dev, const char *string, char *bytes, size_t *bytes_len, uint32_t timeout)
 Receives bytes into bytes buffer until the string pattern string is received or the buffer is full.
 
void at_send_bytes (at_dev_t *dev, const char *bytes, size_t len)
 Send raw bytes to a device.
 
ssize_t at_recv_bytes (at_dev_t *dev, char *bytes, size_t len, uint32_t timeout)
 Receive raw bytes from a device.
 
int at_send_cmd (at_dev_t *dev, const char *command, uint32_t timeout)
 Send command to device.
 
int at_parse_resp (at_dev_t *dev, char const *resp)
 Parse a response from the device.
 
ssize_t at_readline (at_dev_t *dev, char *resp_buf, size_t len, bool keep_eol, uint32_t timeout)
 Read a line from device.
 
ssize_t at_readline_skip_empty (at_dev_t *dev, char *resp_buf, size_t len, bool keep_eol, uint32_t timeout)
 Read a line from device, skipping a possibly empty line.
 
int at_wait_ok (at_dev_t *dev, uint32_t timeout)
 Wait for an OK response.
 
void at_drain (at_dev_t *dev)
 Drain device input buffer.
 
void at_dev_poweron (at_dev_t *dev)
 Power device on.
 
void at_dev_poweroff (at_dev_t *dev)
 Power device off.
 
void at_add_urc (at_dev_t *dev, at_urc_t *urc)
 Add a callback for an unsolicited response code.
 
void at_remove_urc (at_dev_t *dev, at_urc_t *urc)
 Remove an unsolicited response code from the list.
 
void at_process_urc (at_dev_t *dev, uint32_t timeout)
 Process out-of-band data received from the device.
 
void at_postprocess_urc (at_dev_t *dev, char *buf)
 Process one URC from the provided buffer.
 
void at_postprocess_urc_all (at_dev_t *dev, char *buf)
 Process all URCs from the provided buffer.