emlabcpp
modern opinionated embedded C++ library
multiplexer.h File Reference
+ Include dependency graph for multiplexer.h:

Go to the source code of this file.

Classes

class  emlabcpp::protocol::multiplexed_endpoint< Packet >
 

Namespaces

 emlabcpp
 MIT License.
 
 emlabcpp::protocol
 MIT License.
 

Typedefs

using emlabcpp::protocol::channel_type = uint16_t
 
using emlabcpp::protocol::multiplexer_channel_handler = handler< channel_type, std::endian::little >
 
template<std::size_t N>
using emlabcpp::protocol::multiplexer_payload = tuple< std::endian::little, channel_type, sizeless_message< N > >
 
template<std::size_t N>
using emlabcpp::protocol::multiplexer_value = typename multiplexer_payload< N >::value_type
 
template<std::size_t N>
using emlabcpp::protocol::multiplexer_message = typename multiplexer_payload< N >::message_type
 
template<std::size_t N>
using emlabcpp::protocol::multiplexer_handler = handler< multiplexer_payload< N > >
 
using emlabcpp::protocol::multiplexer_service_protocol = std::tuple< multiplexer_enum >
 
using emlabcpp::protocol::multiplexer_service_msg = typename handler< multiplexer_service_protocol >::message_type
 

Enumerations

enum  emlabcpp::protocol::multiplexer_enum : uint8_t {
  emlabcpp::protocol::PORT_MATCH_ERROR = 0 ,
  emlabcpp::protocol::PROTOCOL_ERROR = 1
}
 

Functions

std::tuple< bool, std::span< std::byte > > emlabcpp::protocol::serialize_multiplexed (channel_type channel, std::span< std::byte const > data, std::span< std::byte > target)
 
template<std::size_t N>
multiplexer_message< N > emlabcpp::protocol::serialize_multiplexed (channel_type channel, message< N > const &m)
 
template<typename BinaryCallable >
outcome emlabcpp::protocol::extract_multiplexed (std::span< std::byte const > const &msg, BinaryCallable handle_cb)
 
template<slot... Slotted>
outcome emlabcpp::protocol::multiplexed_dispatch (channel_type chann, auto const &data, Slotted &... slotted)
 

Variables

static constexpr channel_type emlabcpp::protocol::multiplexer_service_id = 0
 
template<typename T >
concept emlabcpp::protocol::slot