Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
esp.c File Reference
#include <logging/log.h>
#include <kernel.h>
#include <ctype.h>
#include <errno.h>
#include <zephyr.h>
#include <device.h>
#include <init.h>
#include <stdlib.h>
#include <drivers/gpio.h>
#include <drivers/uart.h>
#include <net/dns_resolve.h>
#include <net/net_if.h>
#include <net/net_ip.h>
#include <net/net_offload.h>
#include <net/wifi_mgmt.h>
#include "esp.h"

Macros

#define DT_DRV_COMPAT   espressif_esp_at
 
#define MIN_IPD_LEN   (sizeof("+IPD,I,0E") - 1)
 
#define MAX_IPD_LEN   (sizeof("+IPD,I,4294967295E") - 1)
 

Enumerations

enum  modem_control_pins { NUM_PINS }
 

Functions

 LOG_MODULE_REGISTER (wifi_esp_at, CONFIG_WIFI_LOG_LEVEL)
 
 NET_BUF_POOL_DEFINE (mdm_recv_pool, CONFIG_WIFI_ESP_AT_MDM_RX_BUF_COUNT, CONFIG_WIFI_ESP_AT_MDM_RX_BUF_SIZE, 0, NULL)
 
 K_KERNEL_STACK_DEFINE (esp_rx_stack, CONFIG_WIFI_ESP_AT_RX_STACK_SIZE)
 
 K_KERNEL_STACK_DEFINE (esp_workq_stack, CONFIG_WIFI_ESP_AT_WORKQ_STACK_SIZE)
 
static void esp_configure_hostname (struct esp_data *data)
 
static uint8_t esp_mode_from_flags (struct esp_data *data)
 
static int esp_mode_switch (struct esp_data *data, uint8_t mode)
 
static int esp_mode_switch_if_needed (struct esp_data *data)
 
static void esp_mode_switch_submit_if_needed (struct esp_data *data)
 
static void esp_mode_switch_work (struct k_work *work)
 
static int esp_mode_flags_set (struct esp_data *data, uint8_t flags)
 
static int esp_mode_flags_clear (struct esp_data *data, uint8_t flags)
 
 MODEM_CMD_DEFINE (on_cmd_ok)
 
 MODEM_CMD_DEFINE (on_cmd_error)
 
static void esp_rx (struct esp_data *data)
 
static char * str_unquote (char *str)
 
 MODEM_CMD_DEFINE (on_cmd_cipstamac)
 
 MODEM_CMD_DEFINE (on_cmd_cwlap)
 
static void esp_dns_work (struct k_work *work)
 
 MODEM_CMD_DEFINE (on_cmd_cipdns)
 
 MODEM_CMD_DEFINE (on_cmd_wifi_connected)
 
 MODEM_CMD_DEFINE (on_cmd_wifi_disconnected)
 
 MODEM_CMD_DEFINE (on_cmd_cipsta)
 
static void esp_ip_addr_work (struct k_work *work)
 
 MODEM_CMD_DEFINE (on_cmd_got_ip)
 
 MODEM_CMD_DEFINE (on_cmd_connect)
 
 MODEM_CMD_DEFINE (on_cmd_closed)
 
static int cmd_ipd_parse_hdr (struct net_buf *buf, uint16_t len, uint8_t *link_id, int *data_offset, int *data_len, char *end)
 
static int cmd_ipd_check_hdr_end (struct esp_socket *sock, char actual)
 
 MODEM_CMD_DIRECT_DEFINE (on_cmd_ipd)
 
 MODEM_CMD_DEFINE (on_cmd_busy_sending)
 
 MODEM_CMD_DEFINE (on_cmd_busy_processing)
 
 MODEM_CMD_DEFINE (on_cmd_ready)
 
static void esp_mgmt_scan_work (struct k_work *work)
 
static int esp_mgmt_scan (const struct device *dev, scan_result_cb_t cb)
 
 MODEM_CMD_DEFINE (on_cmd_fail)
 
static void esp_mgmt_connect_work (struct k_work *work)
 
static int esp_mgmt_connect (const struct device *dev, struct wifi_connect_req_params *params)
 
static int esp_mgmt_disconnect (const struct device *dev)
 
static int esp_mgmt_ap_enable (const struct device *dev, struct wifi_connect_req_params *params)
 
static int esp_mgmt_ap_disable (const struct device *dev)
 
static void esp_init_work (struct k_work *work)
 
static void esp_reset (struct esp_data *dev)
 
static void esp_iface_init (struct net_if *iface)
 
static int esp_init (const struct device *dev)
 
 NET_DEVICE_DT_INST_OFFLOAD_DEFINE (0, esp_init, NULL, &esp_driver_data, NULL, CONFIG_WIFI_INIT_PRIORITY, &esp_api, 2048)
 

Variables

static struct modem_pin modem_pins []
 
struct k_thread esp_rx_thread
 
struct esp_data esp_driver_data
 
static const struct modem_cmd response_cmds []
 
static const struct modem_cmd unsol_cmds []
 
static const struct net_wifi_mgmt_offload esp_api
 

Macro Definition Documentation

◆ DT_DRV_COMPAT

#define DT_DRV_COMPAT   espressif_esp_at

◆ MAX_IPD_LEN

#define MAX_IPD_LEN   (sizeof("+IPD,I,4294967295E") - 1)

◆ MIN_IPD_LEN

#define MIN_IPD_LEN   (sizeof("+IPD,I,0E") - 1)

Enumeration Type Documentation

◆ modem_control_pins

Enumerator
NUM_PINS 

Function Documentation

◆ cmd_ipd_check_hdr_end()

static int cmd_ipd_check_hdr_end ( struct esp_socket sock,
char  actual 
)
static

◆ cmd_ipd_parse_hdr()

static int cmd_ipd_parse_hdr ( struct net_buf buf,
uint16_t  len,
uint8_t link_id,
int *  data_offset,
int *  data_len,
char *  end 
)
static

◆ esp_configure_hostname()

static void esp_configure_hostname ( struct esp_data data)
static

◆ esp_dns_work()

static void esp_dns_work ( struct k_work work)
static

◆ esp_iface_init()

static void esp_iface_init ( struct net_if iface)
static

◆ esp_init()

static int esp_init ( const struct device dev)
static

◆ esp_init_work()

static void esp_init_work ( struct k_work work)
static

◆ esp_ip_addr_work()

static void esp_ip_addr_work ( struct k_work work)
static

◆ esp_mgmt_ap_disable()

static int esp_mgmt_ap_disable ( const struct device dev)
static

◆ esp_mgmt_ap_enable()

static int esp_mgmt_ap_enable ( const struct device dev,
struct wifi_connect_req_params params 
)
static

◆ esp_mgmt_connect()

static int esp_mgmt_connect ( const struct device dev,
struct wifi_connect_req_params params 
)
static

◆ esp_mgmt_connect_work()

static void esp_mgmt_connect_work ( struct k_work work)
static

◆ esp_mgmt_disconnect()

static int esp_mgmt_disconnect ( const struct device dev)
static

◆ esp_mgmt_scan()

static int esp_mgmt_scan ( const struct device dev,
scan_result_cb_t  cb 
)
static

◆ esp_mgmt_scan_work()

static void esp_mgmt_scan_work ( struct k_work work)
static

◆ esp_mode_flags_clear()

static int esp_mode_flags_clear ( struct esp_data data,
uint8_t  flags 
)
inlinestatic

◆ esp_mode_flags_set()

static int esp_mode_flags_set ( struct esp_data data,
uint8_t  flags 
)
inlinestatic

◆ esp_mode_from_flags()

static uint8_t esp_mode_from_flags ( struct esp_data data)
inlinestatic

◆ esp_mode_switch()

static int esp_mode_switch ( struct esp_data data,
uint8_t  mode 
)
static

◆ esp_mode_switch_if_needed()

static int esp_mode_switch_if_needed ( struct esp_data data)
static

◆ esp_mode_switch_submit_if_needed()

static void esp_mode_switch_submit_if_needed ( struct esp_data data)
static

◆ esp_mode_switch_work()

static void esp_mode_switch_work ( struct k_work work)
static

◆ esp_reset()

static void esp_reset ( struct esp_data dev)
static

◆ esp_rx()

static void esp_rx ( struct esp_data data)
static

◆ K_KERNEL_STACK_DEFINE() [1/2]

K_KERNEL_STACK_DEFINE ( esp_rx_stack  ,
CONFIG_WIFI_ESP_AT_RX_STACK_SIZE   
)

◆ K_KERNEL_STACK_DEFINE() [2/2]

K_KERNEL_STACK_DEFINE ( esp_workq_stack  ,
CONFIG_WIFI_ESP_AT_WORKQ_STACK_SIZE   
)

◆ LOG_MODULE_REGISTER()

LOG_MODULE_REGISTER ( wifi_esp_at  ,
CONFIG_WIFI_LOG_LEVEL   
)

◆ MODEM_CMD_DEFINE() [1/15]

MODEM_CMD_DEFINE ( on_cmd_busy_processing  )

◆ MODEM_CMD_DEFINE() [2/15]

MODEM_CMD_DEFINE ( on_cmd_busy_sending  )

◆ MODEM_CMD_DEFINE() [3/15]

MODEM_CMD_DEFINE ( on_cmd_cipdns  )

◆ MODEM_CMD_DEFINE() [4/15]

MODEM_CMD_DEFINE ( on_cmd_cipsta  )

◆ MODEM_CMD_DEFINE() [5/15]

MODEM_CMD_DEFINE ( on_cmd_cipstamac  )

◆ MODEM_CMD_DEFINE() [6/15]

MODEM_CMD_DEFINE ( on_cmd_closed  )

◆ MODEM_CMD_DEFINE() [7/15]

MODEM_CMD_DEFINE ( on_cmd_connect  )

◆ MODEM_CMD_DEFINE() [8/15]

MODEM_CMD_DEFINE ( on_cmd_cwlap  )

◆ MODEM_CMD_DEFINE() [9/15]

MODEM_CMD_DEFINE ( on_cmd_error  )

◆ MODEM_CMD_DEFINE() [10/15]

MODEM_CMD_DEFINE ( on_cmd_fail  )

◆ MODEM_CMD_DEFINE() [11/15]

MODEM_CMD_DEFINE ( on_cmd_got_ip  )

◆ MODEM_CMD_DEFINE() [12/15]

MODEM_CMD_DEFINE ( on_cmd_ok  )

◆ MODEM_CMD_DEFINE() [13/15]

MODEM_CMD_DEFINE ( on_cmd_ready  )

◆ MODEM_CMD_DEFINE() [14/15]

MODEM_CMD_DEFINE ( on_cmd_wifi_connected  )

◆ MODEM_CMD_DEFINE() [15/15]

MODEM_CMD_DEFINE ( on_cmd_wifi_disconnected  )

◆ MODEM_CMD_DIRECT_DEFINE()

MODEM_CMD_DIRECT_DEFINE ( on_cmd_ipd  )

◆ NET_BUF_POOL_DEFINE()

NET_BUF_POOL_DEFINE ( mdm_recv_pool  ,
CONFIG_WIFI_ESP_AT_MDM_RX_BUF_COUNT  ,
CONFIG_WIFI_ESP_AT_MDM_RX_BUF_SIZE  ,
,
NULL   
)

◆ NET_DEVICE_DT_INST_OFFLOAD_DEFINE()

NET_DEVICE_DT_INST_OFFLOAD_DEFINE ( ,
esp_init  ,
NULL  ,
esp_driver_data,
NULL  ,
CONFIG_WIFI_INIT_PRIORITY  ,
esp_api,
2048   
)

◆ str_unquote()

static char * str_unquote ( char *  str)
static

Variable Documentation

◆ esp_api

const struct net_wifi_mgmt_offload esp_api
static
Initial value:
= {
.iface_api.init = esp_iface_init,
.scan = esp_mgmt_scan,
.connect = esp_mgmt_connect,
.disconnect = esp_mgmt_disconnect,
.ap_enable = esp_mgmt_ap_enable,
.ap_disable = esp_mgmt_ap_disable,
}
static int esp_mgmt_ap_enable(const struct device *dev, struct wifi_connect_req_params *params)
Definition: esp.c:857
static int esp_mgmt_ap_disable(const struct device *dev)
Definition: esp.c:892
static int esp_mgmt_disconnect(const struct device *dev)
Definition: esp.c:847
static void esp_iface_init(struct net_if *iface)
Definition: esp.c:1039
static int esp_mgmt_scan(const struct device *dev, scan_result_cb_t cb)
Definition: esp.c:741
static int esp_mgmt_connect(const struct device *dev, struct wifi_connect_req_params *params)
Definition: esp.c:811

◆ esp_driver_data

struct esp_data esp_driver_data

◆ esp_rx_thread

struct k_thread esp_rx_thread

◆ modem_pins

struct modem_pin modem_pins[]
static
Initial value:
= {
}

◆ response_cmds

const struct modem_cmd response_cmds[]
static
Initial value:
= {
MODEM_CMD("OK", on_cmd_ok, 0U, ""),
MODEM_CMD("ERROR", on_cmd_error, 0U, ""),
}

◆ unsol_cmds

const struct modem_cmd unsol_cmds[]
static
Initial value:
= {
MODEM_CMD("WIFI CONNECTED", on_cmd_wifi_connected, 0U, ""),
MODEM_CMD("WIFI DISCONNECT", on_cmd_wifi_disconnected, 0U, ""),
MODEM_CMD("WIFI GOT IP", on_cmd_got_ip, 0U, ""),
MODEM_CMD("0,CONNECT", on_cmd_connect, 0U, ""),
MODEM_CMD("1,CONNECT", on_cmd_connect, 0U, ""),
MODEM_CMD("2,CONNECT", on_cmd_connect, 0U, ""),
MODEM_CMD("3,CONNECT", on_cmd_connect, 0U, ""),
MODEM_CMD("4,CONNECT", on_cmd_connect, 0U, ""),
MODEM_CMD("0,CLOSED", on_cmd_closed, 0U, ""),
MODEM_CMD("1,CLOSED", on_cmd_closed, 0U, ""),
MODEM_CMD("2,CLOSED", on_cmd_closed, 0U, ""),
MODEM_CMD("3,CLOSED", on_cmd_closed, 0U, ""),
MODEM_CMD("4,CLOSED", on_cmd_closed, 0U, ""),
MODEM_CMD("busy s...", on_cmd_busy_sending, 0U, ""),
MODEM_CMD("busy p...", on_cmd_busy_processing, 0U, ""),
MODEM_CMD("ready", on_cmd_ready, 0U, ""),
MODEM_CMD_DIRECT("+IPD", on_cmd_ipd),
}