mirror of
https://github.com/espressif/esp-idf.git
synced 2025-11-23 03:39:33 +00:00
modem: support modem facility and PPPoS
1. add support for ESP32 DTE 2. add support for SIM800/BG96 DCE 3. add PPPoS setup procedure 4. add support for SMS 5. add mqtt example after PPP connection established
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
// Copyright 2015-2018 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "esp_modem_dce.h"
|
||||
#include "esp_modem_dte.h"
|
||||
#include "esp_event.h"
|
||||
#include "driver/uart.h"
|
||||
|
||||
/**
|
||||
* @brief Declare Event Base for ESP Modem
|
||||
*
|
||||
*/
|
||||
ESP_EVENT_DECLARE_BASE(ESP_MODEM_EVENT);
|
||||
|
||||
/**
|
||||
* @brief ESP Modem Event
|
||||
*
|
||||
*/
|
||||
typedef enum {
|
||||
MODEM_EVENT_PPP_START, /*!< ESP Modem Start PPP Session */
|
||||
MODEM_EVENT_PPP_CONNECT, /*!< ESP Modem Connect to PPP Server */
|
||||
MODEM_EVENT_PPP_DISCONNECT, /*!< ESP Modem Disconnect from PPP Server */
|
||||
MODEM_EVENT_PPP_STOP, /*!< ESP Modem Stop PPP Session*/
|
||||
MODEM_EVENT_UNKNOWN /*!< ESP Modem Unknown Response */
|
||||
} esp_modem_event_t;
|
||||
|
||||
/**
|
||||
* @brief ESP Modem DTE Configuration
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
uart_port_t port_num; /*!< UART port number */
|
||||
uart_word_length_t data_bits; /*!< Data bits of UART */
|
||||
uart_stop_bits_t stop_bits; /*!< Stop bits of UART */
|
||||
uart_parity_t parity; /*!< Parity type */
|
||||
modem_flow_ctrl_t flow_control; /*!< Flow control type */
|
||||
uint32_t baud_rate; /*!< Communication baud rate */
|
||||
} esp_modem_dte_config_t;
|
||||
|
||||
/**
|
||||
* @brief ESP Modem DTE Default Configuration
|
||||
*
|
||||
*/
|
||||
#define ESP_MODEM_DTE_DEFAULT_CONFIG() \
|
||||
{ \
|
||||
.port_num = UART_NUM_1, \
|
||||
.data_bits = UART_DATA_8_BITS, \
|
||||
.stop_bits = UART_STOP_BITS_1, \
|
||||
.parity = UART_PARITY_DISABLE, \
|
||||
.baud_rate = 115200, \
|
||||
.flow_control = MODEM_FLOW_CONTROL_NONE \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Create and initialize Modem DTE object
|
||||
*
|
||||
* @param config configuration of ESP Modem DTE object
|
||||
* @return modem_dte_t*
|
||||
* - Modem DTE object
|
||||
*/
|
||||
modem_dte_t *esp_modem_dte_init(const esp_modem_dte_config_t *config);
|
||||
|
||||
/**
|
||||
* @brief Register event handler for ESP Modem event loop
|
||||
*
|
||||
* @param dte modem_dte_t type object
|
||||
* @param handler event handler to register
|
||||
* @param handler_args arguments for registered handler
|
||||
* @return esp_err_t
|
||||
* - ESP_OK on success
|
||||
* - ESP_ERR_NO_MEM on allocating memory for the handler failed
|
||||
* - ESP_ERR_INVALID_ARG on invalid combination of event base and event id
|
||||
*/
|
||||
esp_err_t esp_modem_add_event_handler(modem_dte_t *dte, esp_event_handler_t handler, void *handler_args);
|
||||
|
||||
/**
|
||||
* @brief Unregister event handler for ESP Modem event loop
|
||||
*
|
||||
* @param dte modem_dte_t type object
|
||||
* @param handler event handler to unregister
|
||||
* @return esp_err_t
|
||||
* - ESP_OK on success
|
||||
* - ESP_ERR_INVALID_ARG on invalid combination of event base and event id
|
||||
*/
|
||||
esp_err_t esp_modem_remove_event_handler(modem_dte_t *dte, esp_event_handler_t handler);
|
||||
|
||||
/**
|
||||
* @brief PPPoS Client IP Information
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
ip4_addr_t ip; /*!< IP Address */
|
||||
ip4_addr_t netmask; /*!< Net Mask */
|
||||
ip4_addr_t gw; /*!< Gateway */
|
||||
ip4_addr_t ns1; /*!< Name Server1 */
|
||||
ip4_addr_t ns2; /*!< Name Server2 */
|
||||
} ppp_client_ip_info_t;
|
||||
|
||||
/**
|
||||
* @brief Setup PPP Session
|
||||
*
|
||||
* @param dte Modem DTE object
|
||||
* @return esp_err_t
|
||||
* - ESP_OK on success
|
||||
* - ESP_FAIL on error
|
||||
*/
|
||||
esp_err_t esp_modem_setup_ppp(modem_dte_t *dte);
|
||||
|
||||
/**
|
||||
* @brief Exit PPP Session
|
||||
*
|
||||
* @param dte Modem DTE Object
|
||||
* @return esp_err_t
|
||||
* - ESP_OK on success
|
||||
* - ESP_FAIL on error
|
||||
*/
|
||||
esp_err_t esp_modem_exit_ppp(modem_dte_t *dte);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user