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:
David Cermak
2022-09-14 15:19:27 +02:00
parent 52d7458b99
commit fcd6f0bb14
11 changed files with 16 additions and 18 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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);

View File

@ -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);

View File

@ -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