mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-07-21 22:42:23 +02:00
feat(examples): Move the slip example to esp-netif folder
And update the slip_modem_get_ipv6_address() to return the address by copy instead of reference (to employ return value optimizaiton where possible)
This commit is contained in:
@ -29,7 +29,6 @@
|
||||
|
||||
extern esp_netif_netstack_config_t *netstack_default_slip;
|
||||
|
||||
// Forward declare modem object
|
||||
typedef struct slip_modem slip_modem_t;
|
||||
|
||||
// Filter callbacks for handling application specific slip messages
|
||||
@ -64,7 +63,7 @@ typedef struct {
|
||||
* @returns
|
||||
* - slip modem driver glue object
|
||||
*/
|
||||
slip_modem_t *slip_modem_create(esp_netif_t *slip_netif, slip_modem_config_t *modem_config);
|
||||
slip_modem_t *slip_modem_create(esp_netif_t *slip_netif, const slip_modem_config_t *modem_config);
|
||||
|
||||
/** @brief Destroy a slip modem
|
||||
*
|
||||
@ -81,9 +80,9 @@ esp_err_t slip_modem_destroy(slip_modem_t *slip);
|
||||
* @param[in] slip modem object
|
||||
*
|
||||
* @returns
|
||||
* - ipv6 address
|
||||
* - ipv6 address returned by copy
|
||||
*/
|
||||
const esp_ip6_addr_t *slip_modem_get_ipv6_address(slip_modem_t *slip);
|
||||
esp_ip6_addr_t slip_modem_get_ipv6_address(slip_modem_t *slip);
|
||||
|
||||
/**
|
||||
* @brief Data path API that forward the supplied data to the attached network interface
|
||||
@ -93,4 +92,4 @@ const esp_ip6_addr_t *slip_modem_get_ipv6_address(slip_modem_t *slip);
|
||||
* @param[in] len length of the data
|
||||
*
|
||||
*/
|
||||
void slip_modem_raw_output(slip_modem_t *slip, void *buffer, size_t len);
|
||||
void slip_modem_raw_write(slip_modem_t *slip, void *buffer, size_t len);
|
@ -64,12 +64,11 @@ struct slip_modem {
|
||||
};
|
||||
|
||||
|
||||
// Forward function declaration
|
||||
static void slip_modem_uart_rx_task(void *arg);
|
||||
static esp_err_t slip_modem_post_attach(esp_netif_t *esp_netif, void *args);
|
||||
|
||||
// Create a new slip modem
|
||||
slip_modem_t *slip_modem_create(esp_netif_t *slip_netif, slip_modem_config_t *modem_config)
|
||||
slip_modem_t *slip_modem_create(esp_netif_t *slip_netif, const slip_modem_config_t *modem_config)
|
||||
{
|
||||
ESP_LOGI(TAG, "%s: Creating slip modem (netif: %p)", __func__, slip_netif);
|
||||
|
||||
@ -228,7 +227,7 @@ static void slip_modem_uart_rx_task(void *arg)
|
||||
esp_netif_receive(slip_modem->base.netif, slip_modem->buffer, len, NULL);
|
||||
}
|
||||
|
||||
// Yeild to allow other tasks to progress
|
||||
// Yield to allow other tasks to progress
|
||||
vTaskDelay(1 * portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
@ -236,12 +235,12 @@ static void slip_modem_uart_rx_task(void *arg)
|
||||
/**
|
||||
* @brief Gets the internally configured ipv6 address
|
||||
*/
|
||||
const esp_ip6_addr_t *slip_modem_get_ipv6_address(slip_modem_t *slip)
|
||||
esp_ip6_addr_t slip_modem_get_ipv6_address(slip_modem_t *slip)
|
||||
{
|
||||
return &slip->addr;
|
||||
return slip->addr;
|
||||
}
|
||||
|
||||
void slip_modem_raw_output(slip_modem_t *slip, void *buffer, size_t len)
|
||||
void slip_modem_raw_write(slip_modem_t *slip, void *buffer, size_t len)
|
||||
{
|
||||
slip_modem_netif_raw_output(slip->base.netif, buffer, len);
|
||||
slip_modem_netif_raw_write(slip->base.netif, buffer, len);
|
||||
}
|
@ -81,7 +81,7 @@ void esp_netif_lwip_slip_input(void *h, void *buffer, unsigned int len, void *eb
|
||||
/**
|
||||
* @brief Write raw data out the SLIP interface
|
||||
*/
|
||||
void slip_modem_netif_raw_output(esp_netif_t *netif, void *buffer, size_t len)
|
||||
void slip_modem_netif_raw_write(esp_netif_t *netif, void *buffer, size_t len)
|
||||
{
|
||||
struct netif *lwip_netif = esp_netif_get_netif_impl(netif);
|
||||
|
@ -39,4 +39,4 @@ esp_err_t slip_modem_netif_start(esp_netif_t *esp_netif, esp_ip6_addr_t *addr);
|
||||
* @return
|
||||
* - ESP_OK on success
|
||||
*/
|
||||
void slip_modem_netif_raw_output(esp_netif_t *netif, void *buffer, size_t len);
|
||||
void slip_modem_netif_raw_write(esp_netif_t *netif, void *buffer, size_t len);
|
@ -119,21 +119,21 @@ esp_err_t udp_rx_tx_init(void)
|
||||
static void slip_set_prefix(slip_modem_t *slip)
|
||||
{
|
||||
uint8_t buff[10] = {0};
|
||||
const esp_ip6_addr_t *addr = slip_modem_get_ipv6_address(slip);
|
||||
const esp_ip6_addr_t addr = slip_modem_get_ipv6_address(slip);
|
||||
ESP_LOGI(TAG, "%s: prefix set (%08x:%08x)", __func__,
|
||||
lwip_ntohl(addr->addr[0]), lwip_ntohl(addr->addr[1]));
|
||||
lwip_ntohl(addr.addr[0]), lwip_ntohl(addr.addr[1]));
|
||||
|
||||
// Build slip set message
|
||||
buff[0] = '!';
|
||||
buff[1] = 'P';
|
||||
for (int i = 0; i < 2; i++) {
|
||||
for (int j = 0; j < 4; j++) {
|
||||
buff[2 + i * 4 + j] = addr->addr[i] >> (j * 8);
|
||||
buff[2 + i * 4 + j] = addr.addr[i] >> (j * 8);
|
||||
}
|
||||
}
|
||||
|
||||
// Write raw data out the slip interface
|
||||
slip_modem_raw_output(slip, buff, 2 + 8);
|
||||
slip_modem_raw_write(slip, buff, 2 + 8);
|
||||
}
|
||||
|
||||
// slip_rx_filter filters incoming commands from the slip interface
|
Reference in New Issue
Block a user