logo
  • Overview
  • Getting Started
  • Manual
  • Tutorials
  • License
  • Examples
  • Global Namespace
  • UgCS
  • namespace callback_internal
    • namespace callback_internal::Callback_forced_args_helper
  • namespace std
  • namespace ugcs
    • namespace ugcs::vsm
      • namespace ugcs::vsm::callback_internal
        • template struct ugcs::vsm::callback_internal::Callback_args_checker
        • template struct ugcs::vsm::callback_internal::Callback_args_checker<Callback, idx, Arg>
        • template struct ugcs::vsm::callback_internal::Callback_args_checker<Callback, 0>
        • template struct ugcs::vsm::callback_internal::Callback_args_checker<Callback, idx, Arg, Args…>
        • template class ugcs::vsm::callback_internal::Dummy_callback_helper
        • template class ugcs::vsm::callback_internal::Dummy_callback_helper<void, Args…>
      • namespace ugcs::vsm::internal
        • class ugcs::vsm::internal::Overlapped_io_controller
        • class ugcs::vsm::internal::Poll_io_controller
        • class ugcs::vsm::internal::Posix_file_handle
        • template class ugcs::vsm::internal::Shared_getter
        • template class ugcs::vsm::internal::Shared_getter<T, void>
        • template class ugcs::vsm::internal::Shared_getter<T, T>
        • template class ugcs::vsm::internal::Singleton_creator
        • template class ugcs::vsm::internal::Singleton_creator<T, typename std::enable_if<std::is_default_constructible<T>::value>::type>
        • class ugcs::vsm::internal::Windows_file_handle
      • namespace ugcs::vsm::java_internals
        • template struct ugcs::vsm::java_internals::MethodCallSelector
        • template struct ugcs::vsm::java_internals::MethodCallSelector<jshort>
        • template struct ugcs::vsm::java_internals::MethodCallSelector<jint>
        • template struct ugcs::vsm::java_internals::MethodCallSelector<jlong>
        • template struct ugcs::vsm::java_internals::MethodCallSelector<jfloat>
        • template struct ugcs::vsm::java_internals::MethodCallSelector<jchar>
        • template struct ugcs::vsm::java_internals::MethodCallSelector<jboolean>
        • template struct ugcs::vsm::java_internals::MethodCallSelector<jbyte>
        • template struct ugcs::vsm::java_internals::MethodCallSelector<void>
        • template struct ugcs::vsm::java_internals::MethodCallSelector<jobject>
        • template struct ugcs::vsm::java_internals::MethodCallSelector<jdouble>
        • template class ugcs::vsm::java_internals::Array<jobject>
        • template class ugcs::vsm::java_internals::Array
        • class ugcs::vsm::java_internals::ArrayBase
        • class ugcs::vsm::java_internals::ObjectArray
        • template class ugcs::vsm::java_internals::PrimitiveArray
      • namespace ugcs::vsm::mavlink
        • namespace ugcs::vsm::mavlink::internal
        • enum ugcs::vsm::mavlink::Field_type_id
        • template struct ugcs::vsm::mavlink::Field_default_value
        • template struct ugcs::vsm::mavlink::Field_default_value<T, typename std::enable_if<std::is_floating_point<T>::value>::type>
        • template struct ugcs::vsm::mavlink::Field_default_value<T, typename std::enable_if<std::is_integral<T>::value>::type>
        • template struct ugcs::vsm::mavlink::Payload_type_mapper
        • class ugcs::vsm::mavlink::Checksum
        • class ugcs::vsm::mavlink::Extension
        • template class ugcs::vsm::mavlink::Message
        • template class ugcs::vsm::mavlink::Payload
        • class ugcs::vsm::mavlink::Payload_base
        • template class ugcs::vsm::mavlink::Value
        • template class ugcs::vsm::mavlink::Value_array
        • template class ugcs::vsm::mavlink::Value_array<Char, size>
      • namespace ugcs::vsm::param_setter_internal
        • template class ugcs::vsm::param_setter_internal::Param_setter
      • namespace ugcs::vsm::sockets
      • enum ugcs::vsm::Io_result
      • enum ugcs::vsm::Run_as_service_result
      • struct ugcs::vsm::Altimeter_required_exception_dummy_struct
      • struct ugcs::vsm::Debug_assert_exception_dummy_struct
      • struct ugcs::vsm::Internal_error_exception_dummy_struct
      • struct ugcs::vsm::Invalid_op_exception_dummy_struct
      • struct ugcs::vsm::Invalid_param_exception_dummy_struct
      • struct ugcs::vsm::Nullptr_exception_dummy_struct
      • struct ugcs::vsm::System_exception_dummy_struct
      • struct ugcs::vsm::Ucs_info
      • class ugcs::vsm::Action
        • enum ugcs::vsm::Action::Type
        • struct ugcs::vsm::Action::Format_exception_dummy_struct
        • template struct ugcs::vsm::Action::Mapper<Action::Type::REPEAT_SERVO>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::POI>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::PAYLOAD_STEERING>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::PANORAMA>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::SET_HOME>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::TAKEOFF>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::SET_SERVO>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::TASK_ATTRIBUTES>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::VTOL_TRANSITION>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::MOVE>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::HEADING>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::CAMERA_CONTROL>
        • template struct ugcs::vsm::Action::Mapper
        • template struct ugcs::vsm::Action::Mapper<Action::Type::LANDING>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::CAMERA_SERIES_BY_DISTANCE>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::CAMERA_TRIGGER>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::CAMERA_SERIES_BY_TIME>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::CHANGE_SPEED>
        • template struct ugcs::vsm::Action::Mapper<Action::Type::WAIT>
      • class ugcs::vsm::Android_serial_processor
        • class ugcs::vsm::Android_serial_processor::Open_request
        • class ugcs::vsm::Android_serial_processor::Read_request
        • class ugcs::vsm::Android_serial_processor::Stream
        • class ugcs::vsm::Android_serial_processor::Stream_entry
        • class ugcs::vsm::Android_serial_processor::Write_request
      • template class ugcs::vsm::Bo_value
      • template class ugcs::vsm::Callback<Method, typename std::enable_if<callback_internal::Is_method_ptr<Method>()>::type, Class_ptr, Args…>
      • template class ugcs::vsm::Callback
      • template class ugcs::vsm::Callback_base
        • template class ugcs::vsm::Callback_base::Ptr
      • template class ugcs::vsm::Callback_forced_args
      • template class ugcs::vsm::Callback_proxy
        • class ugcs::vsm::Callback_proxy::Hasher
      • class ugcs::vsm::Camera_control_action
      • class ugcs::vsm::Camera_series_by_distance_action
      • class ugcs::vsm::Camera_series_by_time_action
      • class ugcs::vsm::Camera_trigger_action
      • class ugcs::vsm::Cartesian_tuple
      • class ugcs::vsm::Change_speed_action
      • class ugcs::vsm::Crc32
      • class ugcs::vsm::Cucs_processor
        • struct ugcs::vsm::Cucs_processor::Server_context
        • struct ugcs::vsm::Cucs_processor::Vehicle_context
      • template class ugcs::vsm::Derived_exception
      • class ugcs::vsm::Device
        • class ugcs::vsm::Device::Commit_scope
      • template class ugcs::vsm::Enum_set
      • class ugcs::vsm::Exception
        • struct ugcs::vsm::Exception::Va_args_overload
        • struct ugcs::vsm::Exception::Va_list_overload
      • class ugcs::vsm::File_processor
        • struct ugcs::vsm::File_processor::Already_exists_exception_dummy_struct
        • struct ugcs::vsm::File_processor::Exception_dummy_struct
        • struct ugcs::vsm::File_processor::Not_found_exception_dummy_struct
        • struct ugcs::vsm::File_processor::Permission_denied_exception_dummy_struct
        • class ugcs::vsm::File_processor::Native_controller
        • class ugcs::vsm::File_processor::Stream
      • class ugcs::vsm::Geodetic_tuple
      • class ugcs::vsm::Heading_action
      • class ugcs::vsm::Http_parser
        • struct ugcs::vsm::Http_parser::string_compare_ignore_case
      • class ugcs::vsm::Io_buffer
      • class ugcs::vsm::Io_request
      • class ugcs::vsm::Io_stream
        • enum ugcs::vsm::Io_stream::State
        • enum ugcs::vsm::Io_stream::Type
      • class ugcs::vsm::Java
        • class ugcs::vsm::Java::Env
      • class ugcs::vsm::Landing_action
      • class ugcs::vsm::Local_interface
      • class ugcs::vsm::Log
        • enum ugcs::vsm::Log::Level
        • struct ugcs::vsm::Log::Exception_dummy_struct
        • class ugcs::vsm::Log::Platform_logger
      • class ugcs::vsm::Mavlink_decoder
      • class ugcs::vsm::Mavlink_demuxer
        • struct ugcs::vsm::Mavlink_demuxer::Duplicate_handler_dummy_struct
        • template class ugcs::vsm::Mavlink_demuxer::Callback
        • class ugcs::vsm::Mavlink_demuxer::Callback_base
      • class ugcs::vsm::Mavlink_encoder
      • class ugcs::vsm::Mavlink_stream
      • class ugcs::vsm::Move_action
        • enum ugcs::vsm::Move_action::Turn_type
      • class ugcs::vsm::Operation_waiter
      • class ugcs::vsm::Panorama_action
      • template class ugcs::vsm::Param_exception
      • class ugcs::vsm::Payload_steering_action
      • class ugcs::vsm::Piped_request_waiter
      • class ugcs::vsm::Poi_action
      • template class ugcs::vsm::Position
      • class ugcs::vsm::Properties
        • struct ugcs::vsm::Properties::Exception_dummy_struct
        • struct ugcs::vsm::Properties::Not_convertible_exception_dummy_struct
        • struct ugcs::vsm::Properties::Not_found_exception_dummy_struct
        • struct ugcs::vsm::Properties::Parse_exception_dummy_struct
        • class ugcs::vsm::Properties::Iterator
        • class ugcs::vsm::Properties::Property
      • class ugcs::vsm::Property
        • enum ugcs::vsm::Property::Value_spec
        • enum ugcs::vsm::Property::Value_type
      • class ugcs::vsm::Property_list
      • class ugcs::vsm::Quaternion
      • class ugcs::vsm::Read_request
      • template class ugcs::vsm::Reference_guard
        • class ugcs::vsm::Reference_guard::Hasher
      • class ugcs::vsm::Repeat_servo_action
      • class ugcs::vsm::Request_container
        • enum ugcs::vsm::Request_container::Type
        • class ugcs::vsm::Request_container::Request
        • class ugcs::vsm::Request_container::Request_waiter
      • template class ugcs::vsm::Request_context
      • class ugcs::vsm::Request_temp_completion_context
      • class ugcs::vsm::Request_worker
      • class ugcs::vsm::Serial_processor
        • class ugcs::vsm::Serial_processor::Stream
      • class ugcs::vsm::Service_discovery_processor
      • class ugcs::vsm::Set_home_action
      • class ugcs::vsm::Set_servo_action
      • class ugcs::vsm::Shared_memory
        • enum ugcs::vsm::Shared_memory::Open_result
      • class ugcs::vsm::Shared_mutex_file
      • template class ugcs::vsm::Singleton
      • class ugcs::vsm::Socket_processor
        • class ugcs::vsm::Socket_processor::Stream
      • class ugcs::vsm::Subsystem
      • class ugcs::vsm::Takeoff_action
      • class ugcs::vsm::Task
      • class ugcs::vsm::Task_attributes_action
        • enum ugcs::vsm::Task_attributes_action::Emergency_action
      • class ugcs::vsm::Text_stream_filter
        • class ugcs::vsm::Text_stream_filter::Entry
      • class ugcs::vsm::Timer_processor
        • class ugcs::vsm::Timer_processor::Timer
      • class ugcs::vsm::Ucs_request
      • class ugcs::vsm::Vehicle
        • class ugcs::vsm::Vehicle::Command_map
        • class ugcs::vsm::Vehicle::Hasher
      • class ugcs::vsm::Vehicle_command
        • enum ugcs::vsm::Vehicle_command::Camera_power_state
        • enum ugcs::vsm::Vehicle_command::Camera_trigger_state
        • enum ugcs::vsm::Vehicle_command::Type
      • class ugcs::vsm::Vehicle_request
        • enum ugcs::vsm::Vehicle_request::Result
        • class ugcs::vsm::Vehicle_request::Handle
      • template class ugcs::vsm::Vehicle_request_spec<void>
      • template class ugcs::vsm::Vehicle_request_spec
        • class ugcs::vsm::Vehicle_request_spec::Handle
      • class ugcs::vsm::Vsm_command
      • class ugcs::vsm::Vtol_transition_action
        • enum ugcs::vsm::Vtol_transition_action::Mode
      • class ugcs::vsm::Wait_action
      • class ugcs::vsm::Wgs84_datum
      • class ugcs::vsm::Windows_wstring
        • struct ugcs::vsm::Windows_wstring::Conversion_failure_dummy_struct
      • class ugcs::vsm::Write_request
  • struct glob_t
  • class Adsb_vehicle
On this page
  • Overview
  • Detailed Documentation
    • Typedefs
    • Fields
    • Construction
    • Methods

class ugcs::vsm::Mavlink_demuxer¶

Overview¶

Mavlink message demultiplexer based on message, system and component identifiers. More…

#include <mavlink_demuxer.h>

class Mavlink_demuxer
{
public:
    // typedefs

    typedef signed Message_id;
    typedef int64_t System_id;
    typedef signed Component_id;
    typedef ugcs::vsm::Param_exception<Duplicate_handler_dummy_struct,> Duplicate_handler;
    typedef Callback_proxy<void, typename mavlink::Message<message_id, Extention_type>::Ptr> Handler;
    typedef Callback_proxy<bool, Io_buffer::Ptr, mavlink::MESSAGE_ID_TYPE, System_id, uint8_t, uint32_t> Default_handler;

    // structs

    struct Duplicate_handler_dummy_struct;

    // classes

    template <mavlink::MESSAGE_ID_TYPE message_id, class Extention_type>
    class Callback;

    class Callback_base;

    // fields

    static constexpr Message_id MESSAGE_ID_ANY = -1;
    static constexpr System_id SYSTEM_ID_ANY = -1;
    static constexpr Component_id COMPONENT_ID_ANY = -1;

    // construction

    Mavlink_demuxer(const Mavlink_demuxer&);

    // methods

    void Disable();
    void Register_default_handler(Default_handler handler);

    template <mavlink::MESSAGE_ID_TYPE message_id, class Extention_type>
    Key Register_handler(
        Handler<message_id, Extention_type> handler,
        System_id system_id = SYSTEM_ID_ANY,
        Component_id component_id = COMPONENT_ID_ANY,
        Request_processor::Ptr processor = nullptr
        );

    bool Demux(
        Io_buffer::Ptr buffer,
        mavlink::MESSAGE_ID_TYPE message_id,
        System_id system_id,
        uint8_t component_id,
        uint32_t request_id
        );

    void Unregister_handler(Key&);
};

Detailed Documentation¶

Mavlink message demultiplexer based on message, system and component identifiers.

Supposed to be conveniently used with Mavlink_decoder. Messages from different mavlink extensions but with same identifiers can not be demultiplexed simultaneously.

Typedefs¶

typedef signed Message_id

Helper type for Mavlink message id which is able to hold special values.

typedef int64_t System_id

Helper type for Mavlink system id which is able to hold special values.

typedef signed Component_id

Helper type for Mavlink component id which is able to hold special values.

typedef Callback_proxy<void, typename mavlink::Message<message_id, Extention_type>::Ptr> Handler

Handler type for the specific demultiplexed Mavlink message.

typedef Callback_proxy<bool, Io_buffer::Ptr, mavlink::MESSAGE_ID_TYPE, System_id, uint8_t, uint32_t> Default_handler

Default handler which is called for all Mavlink messages which does not have a handler.

Io_buffer contains the raw payload data.

Returns:

true message will be resubmitted to demuxer for further processing, otherwise false.

Fields¶

static constexpr Message_id MESSAGE_ID_ANY = -1

Special value representing any Mavlink message id.

static constexpr System_id SYSTEM_ID_ANY = -1

Special value representing any Mavlink system id.

static constexpr Component_id COMPONENT_ID_ANY = -1

Special value representing any Mavlink component id.

Construction¶

Mavlink_demuxer(const Mavlink_demuxer&)

Delete copy constructor.

Methods¶

void Disable()

Should be called prior to intention to delete the instance.

void Register_default_handler(Default_handler handler)

Register default handler.

Called when more specific handler does not exist. Always called from the thread, which calls Demux method.

template <mavlink::MESSAGE_ID_TYPE message_id, class Extention_type>
Key Register_handler(
    Handler<message_id, Extention_type> handler,
    System_id system_id = SYSTEM_ID_ANY,
    Component_id component_id = COMPONENT_ID_ANY,
    Request_processor::Ptr processor = nullptr
    )

Register handler for specific Mavlink message, system id and component id.

Parameters:

handler

Handler taking specific Mavlink message.

system_id

System id to call the handler for, or SYSTEM_ID_ANY to call the handler for any system id.

component_id

Component id to call the handler for, or COMPONENT_ID_ANY to call the handler for any component id.

processor

If given, specifies request processor in which context the handler should be executed, otherwise handler is executed from the thread which calls Demux method.

Returns:

Valid registration key which can be used to unregister the handler later.

bool Demux(
    Io_buffer::Ptr buffer,
    mavlink::MESSAGE_ID_TYPE message_id,
    System_id system_id,
    uint8_t component_id,
    uint32_t request_id
    )

Demultiplex Mavlink message.

Returns:

true if message was handled by some non-default handler, otherwise false.

void Unregister_handler(Key&)

Unregister handler using registration key.

Key is invalidated upon exit from the method.

previous

class ugcs::vsm::Mavlink_decoder

next

struct ugcs::vsm::Mavlink_demuxer::Duplicate_handler_dummy_struct

© Copyright 2020, SPH Engineering.

Created using Sphinx 4.3.2.