forked from espressif/esp-protocols
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;
|
extern esp_netif_netstack_config_t *netstack_default_slip;
|
||||||
|
|
||||||
// Forward declare modem object
|
|
||||||
typedef struct slip_modem slip_modem_t;
|
typedef struct slip_modem slip_modem_t;
|
||||||
|
|
||||||
// Filter callbacks for handling application specific slip messages
|
// Filter callbacks for handling application specific slip messages
|
||||||
@ -64,7 +63,7 @@ typedef struct {
|
|||||||
* @returns
|
* @returns
|
||||||
* - slip modem driver glue object
|
* - 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
|
/** @brief Destroy a slip modem
|
||||||
*
|
*
|
||||||
@ -81,9 +80,9 @@ esp_err_t slip_modem_destroy(slip_modem_t *slip);
|
|||||||
* @param[in] slip modem object
|
* @param[in] slip modem object
|
||||||
*
|
*
|
||||||
* @returns
|
* @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
|
* @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
|
* @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 void slip_modem_uart_rx_task(void *arg);
|
||||||
static esp_err_t slip_modem_post_attach(esp_netif_t *esp_netif, void *args);
|
static esp_err_t slip_modem_post_attach(esp_netif_t *esp_netif, void *args);
|
||||||
|
|
||||||
// Create a new slip modem
|
// 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);
|
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);
|
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);
|
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
|
* @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
|
* @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);
|
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
|
* @return
|
||||||
* - ESP_OK on success
|
* - 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)
|
static void slip_set_prefix(slip_modem_t *slip)
|
||||||
{
|
{
|
||||||
uint8_t buff[10] = {0};
|
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__,
|
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
|
// Build slip set message
|
||||||
buff[0] = '!';
|
buff[0] = '!';
|
||||||
buff[1] = 'P';
|
buff[1] = 'P';
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
for (int j = 0; j < 4; j++) {
|
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
|
// 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
|
// slip_rx_filter filters incoming commands from the slip interface
|
Reference in New Issue
Block a user