blob: b1b9ab508c115d5ca1b0c126168011df5829ccb2 [file] [log] [blame]
/*
* Copyright (c) 2022 Raspberry Pi (Trading) Ltd.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef _PICO_LWIP_FREERTOS_H
#define _PICO_LWIP_FREERTOS_H
#include "pico.h"
#include "pico/async_context.h"
#ifdef __cplusplus
extern "C" {
#endif
/** \file pico/lwip_freertos.h
* \defgroup pico_lwip_freertos pico_lwip_freertos
* \ingroup pico_lwip
* \brief Glue library for integration lwIP in \c NO_SYS=0 mode with the SDK. Simple \c init and \c deinit
* are all that is required to hook up lwIP (with full blocking API support) via an \ref async_context instance.
*/
/*! \brief Initializes lwIP (NO_SYS=0 mode) support support for FreeRTOS using the provided async_context
* \ingroup pico_lwip_freertos
*
* If the initialization succeeds, \ref lwip_freertos_deinit() can be called to shutdown lwIP support
*
* \param context the async_context instance that provides the abstraction for handling asynchronous work. Note in general
* this would be an \ref async_context_freertos instance, though it doesn't have to be.
*
* \return true if the initialization succeeded
*/
bool lwip_freertos_init(async_context_t *context);
/*! \brief De-initialize lwIP (NO_SYS=0 mode) support for FreeRTOS
* \ingroup pico_lwip_freertos
*
* Note that since lwIP may only be initialized once, and doesn't itself provide a shutdown mechanism, lwIP
* itself may still consume resources.
*
* It is however safe to call \ref lwip_freertos_init again later.
*
* \param context the async_context the lwip_freertos support was added to via \ref lwip_freertos_init
*/
void lwip_freertos_deinit(async_context_t *context);
#ifdef __cplusplus
}
#endif
#endif