2018-11-22 22:53:20 -05:00
|
|
|
// 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"
|
2019-09-04 07:58:29 -04:00
|
|
|
#include "lwip/ip_addr.h"
|
2018-11-22 22:53:20 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @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
|