| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- // 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"
- #include "esp_modem_compat.h"
- /**
- * @brief Declare Event Base for ESP Modem
- *
- */
- ESP_EVENT_DECLARE_BASE(ESP_MODEM_EVENT);
- /**
- * @brief ESP Modem Event
- *
- */
- typedef enum {
- ESP_MODEM_EVENT_PPP_START = 0, /*!< ESP Modem Start PPP Session */
- ESP_MODEM_EVENT_PPP_STOP = 3, /*!< ESP Modem Stop PPP Session*/
- ESP_MODEM_EVENT_UNKNOWN = 4 /*!< 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 */
- int tx_io_num; /*!< TXD Pin Number */
- int rx_io_num; /*!< RXD Pin Number */
- int rts_io_num; /*!< RTS Pin Number */
- int cts_io_num; /*!< CTS Pin Number */
- int rx_buffer_size; /*!< UART RX Buffer Size */
- int tx_buffer_size; /*!< UART TX Buffer Size */
- int event_queue_size; /*!< UART Event Queue Size */
- uint32_t event_task_stack_size; /*!< UART Event Task Stack size */
- int event_task_priority; /*!< UART Event Task Priority */
- union {
- int dte_buffer_size; /*!< Internal buffer size */
- int line_buffer_size; /*!< Compatible option for the internal buffer size */
- };
- } esp_modem_dte_config_t;
- /**
- * @brief Type used for reception callback
- *
- */
- typedef esp_err_t (*esp_modem_on_receive)(void *buffer, size_t len, void *context);
- /**
- * @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,\
- .tx_io_num = 25, \
- .rx_io_num = 26, \
- .rts_io_num = 27, \
- .cts_io_num = 23, \
- .rx_buffer_size = 1024, \
- .tx_buffer_size = 512, \
- .event_queue_size = 30, \
- .event_task_stack_size = 2048, \
- .event_task_priority = 5, \
- .dte_buffer_size = 512 \
- }
- /**
- * @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_set_event_handler(modem_dte_t *dte, esp_event_handler_t handler, int32_t event_id, 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 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_start_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_stop_ppp(modem_dte_t *dte);
- /**
- * @brief Setup on reception callback
- *
- * @param dte ESP Modem DTE object
- * @param receive_cb Function pointer to the reception callback
- * @param receive_cb_ctx Contextual pointer to be passed to the reception callback
- *
- * @return ESP_OK on success
- */
- esp_err_t esp_modem_set_rx_cb(modem_dte_t *dte, esp_modem_on_receive receive_cb, void *receive_cb_ctx);
- /**
- * @brief Notify the modem, that ppp netif has closed
- *
- * @note This API should only be used internally by the modem-netif layer
- *
- * @param dte ESP Modem DTE object
- *
- * @return ESP_OK on success
- */
- esp_err_t esp_modem_notify_ppp_netif_closed(modem_dte_t *dte);
- #ifdef __cplusplus
- }
- #endif
|