/* * Copyright 2009, Freie Universitaet Berlin (FUB). All rights reserved. * * This file is subject to the terms and conditions of the GNU Lesser * General Public License v2.1. See the file LICENSE in the top level * directory for more details. */ /** * @defgroup net_mmstack Protocol multiplex * @ingroup net * @brief Protocol handler multiplexing * @{ * * @file * @brief Protocol handler multiplexing * * @author Thomas Hillebrandt * @author Heiko Will * @author Michael Baar */ #ifndef PROTOCOLMULTIPLEX_H_ #define PROTOCOLMULTIPLEX_H_ #include "radio/types.h" #ifdef __cplusplus extern "C" { #endif typedef struct { packet_handler_t handler; protocol_t protocol; } handler_entry_t; typedef struct { uint8_t size; handler_entry_t *handler; } pm_table_t; void pm_init_table(pm_table_t *table, uint8_t size, handler_entry_t *handler); int pm_find_handler_index(const pm_table_t *table, protocol_t protocol, unsigned int start); int pm_set_handler(const pm_table_t *table, protocol_t protocol, packet_handler_t handler); void pm_remove_handler(const pm_table_t *table, protocol_t protocol, packet_handler_t handler); int pm_invoke(const pm_table_t *table, protocol_t protocol, void *payload, int payload_size, packet_info_t *packet_info); #ifdef __cplusplus } #endif /** @} */ #endif /* PROTOCOLMULTIPLEX_H_ */