• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mavlink / MAVSDK / 11767930807

10 Nov 2024 07:33PM UTC coverage: 38.608% (+0.7%) from 37.921%
11767930807

push

github

web-flow
Merge pull request #2394 from mavlink/pr-consolidate-ci

Consolidate CI

12030 of 31159 relevant lines covered (38.61%)

243.33 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

46.24
/src/mavsdk/plugins/component_metadata/component_metadata_impl.cpp
1
#include "component_metadata_impl.h"
2

3
namespace mavsdk {
4

5
namespace fs = std::filesystem;
6

7
ComponentMetadataImpl::ComponentMetadataImpl(System& system) : PluginImplBase(system)
×
8
{
9
    _system_impl->register_plugin(this);
×
10
}
×
11

12
ComponentMetadataImpl::ComponentMetadataImpl(std::shared_ptr<System> system) :
1✔
13
    PluginImplBase(std::move(system))
1✔
14
{
15
    _system_impl->register_plugin(this);
1✔
16
}
1✔
17

18
ComponentMetadataImpl::~ComponentMetadataImpl()
2✔
19
{
20
    _system_impl->unregister_plugin(this);
1✔
21
}
2✔
22

23
void ComponentMetadataImpl::init() {}
1✔
24

25
void ComponentMetadataImpl::deinit() {}
1✔
26

27
void ComponentMetadataImpl::enable()
1✔
28
{
29
    const std::lock_guard lg{_mutex};
1✔
30
    request_componenents();
1✔
31
    _is_enabled = true;
1✔
32
}
1✔
33

34
void ComponentMetadataImpl::disable()
1✔
35
{
36
    _is_enabled = false;
1✔
37
}
1✔
38

39
void ComponentMetadataImpl::request_componenents()
2✔
40
{
41
    // Assumes _mutex is taken
42
    for (const auto& component : _components_to_request) {
3✔
43
        _system_impl->component_metadata().request_component(component);
1✔
44
    }
45
}
2✔
46

47
void ComponentMetadataImpl::request_component(uint32_t compid)
1✔
48
{
49
    const std::lock_guard lg{_mutex};
1✔
50
    _components_to_request.insert(compid);
1✔
51
    if (_is_enabled) {
1✔
52
        request_componenents();
1✔
53
    }
54
}
1✔
55

56
std::pair<ComponentMetadata::Result, ComponentMetadata::MetadataData>
57
ComponentMetadataImpl::get_metadata(uint32_t compid, ComponentMetadata::MetadataType type)
×
58
{
59
    auto result =
×
60
        _system_impl->component_metadata().get_metadata(compid, convert_metadata_type(type));
×
61
    return std::make_pair(
62
        convert_result(result.first), convert_metadata_data(std::move(result.second)));
×
63
}
×
64

65
void ComponentMetadataImpl::unsubscribe_metadata_available(
×
66
    ComponentMetadata::MetadataAvailableHandle handle)
67
{
68
    const auto converted_handle =
×
69
        _handle_factory.convert_to<MavlinkComponentMetadata::MetadataUpdate>(handle);
×
70
    _system_impl->component_metadata().unsubscribe_metadata_available(converted_handle);
×
71
}
×
72
ComponentMetadata::MetadataAvailableHandle ComponentMetadataImpl::subscribe_metadata_available(
1✔
73
    const ComponentMetadata::MetadataAvailableCallback& callback)
74
{
75
    const auto handle = _system_impl->component_metadata().subscribe_metadata_available(
2✔
76
        [temp_callback = callback](MavlinkComponentMetadata::MetadataUpdate update) {
3✔
77
            temp_callback(convert_metadata_update(std::move(update)));
3✔
78
        });
1✔
79
    return _handle_factory.convert_from(handle);
1✔
80
}
81
ComponentMetadata::Result
82
ComponentMetadataImpl::convert_result(MavlinkComponentMetadata::Result result)
×
83
{
84
    switch (result) {
×
85
        case MavlinkComponentMetadata::Result::Success:
×
86
            return ComponentMetadata::Result::Success;
×
87
        case MavlinkComponentMetadata::Result::NotAvailable:
×
88
            return ComponentMetadata::Result::NotAvailable;
×
89
        case MavlinkComponentMetadata::Result::ConnectionError:
×
90
            return ComponentMetadata::Result::ConnectionError;
×
91
        case MavlinkComponentMetadata::Result::Unsupported:
×
92
            return ComponentMetadata::Result::Unsupported;
×
93
        case MavlinkComponentMetadata::Result::Denied:
×
94
            return ComponentMetadata::Result::Denied;
×
95
        case MavlinkComponentMetadata::Result::Failed:
×
96
            return ComponentMetadata::Result::Failed;
×
97
        case MavlinkComponentMetadata::Result::Timeout:
×
98
            return ComponentMetadata::Result::Timeout;
×
99
        case MavlinkComponentMetadata::Result::NoSystem:
×
100
            return ComponentMetadata::Result::NoSystem;
×
101
        case MavlinkComponentMetadata::Result::NotRequested:
×
102
            return ComponentMetadata::Result::NotRequested;
×
103
    }
104
    return ComponentMetadata::Result::Failed;
×
105
}
106
ComponentMetadata::MetadataType
107
ComponentMetadataImpl::convert_metadata_type(MavlinkComponentMetadata::MetadataType type)
3✔
108
{
109
    switch (type) {
3✔
110
        case MavlinkComponentMetadata::MetadataType::AllCompleted:
1✔
111
            return ComponentMetadata::MetadataType::AllCompleted;
1✔
112
        case MavlinkComponentMetadata::MetadataType::Parameter:
1✔
113
            return ComponentMetadata::MetadataType::Parameter;
1✔
114
        case MavlinkComponentMetadata::MetadataType::Events:
1✔
115
            return ComponentMetadata::MetadataType::Events;
1✔
116
        case MavlinkComponentMetadata::MetadataType::Actuators:
×
117
            return ComponentMetadata::MetadataType::Actuators;
×
118
    }
119
    return ComponentMetadata::MetadataType::Parameter;
×
120
}
121
MavlinkComponentMetadata::MetadataType
122
ComponentMetadataImpl::convert_metadata_type(ComponentMetadata::MetadataType type)
×
123
{
124
    switch (type) {
×
125
        case ComponentMetadata::MetadataType::AllCompleted:
×
126
            return MavlinkComponentMetadata::MetadataType::AllCompleted;
×
127
        case ComponentMetadata::MetadataType::Parameter:
×
128
            return MavlinkComponentMetadata::MetadataType::Parameter;
×
129
        case ComponentMetadata::MetadataType::Events:
×
130
            return MavlinkComponentMetadata::MetadataType::Events;
×
131
        case ComponentMetadata::MetadataType::Actuators:
×
132
            return MavlinkComponentMetadata::MetadataType::Actuators;
×
133
    }
134
    return MavlinkComponentMetadata::MetadataType::Parameter;
×
135
}
136
ComponentMetadata::MetadataData
137
ComponentMetadataImpl::convert_metadata_data(MavlinkComponentMetadata::MetadataData data)
×
138
{
139
    return ComponentMetadata::MetadataData{std::move(data.json_metadata)};
×
140
}
141
ComponentMetadata::MetadataUpdate
142
ComponentMetadataImpl::convert_metadata_update(MavlinkComponentMetadata::MetadataUpdate data)
3✔
143
{
144
    return ComponentMetadata::MetadataUpdate{
145
        data.compid, convert_metadata_type(data.type), std::move(data.json_metadata)};
3✔
146
}
147

148
} // namespace mavsdk
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc