Firmware
input_mavlink.h
Go to the documentation of this file.
1 /****************************************************************************
2 *
3 * Copyright (c) 2016-2017 PX4 Development Team. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 * 3. Neither the name PX4 nor the names of its contributors may be
16 * used to endorse or promote products derived from this software
17 * without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
26 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 *
32 ****************************************************************************/
33 
40 #pragma once
41 
42 #include "input.h"
43 #include "input_rc.h"
44 #include <cstdint>
45 
46 #include <uORB/topics/vehicle_roi.h>
47 #include <uORB/topics/vehicle_command.h>
48 
49 namespace vmount
50 {
51 
52 
57 class InputMavlinkROI : public InputBase
58 {
59 public:
60  InputMavlinkROI() = default;
61  virtual ~InputMavlinkROI();
62 
63  virtual void print_status();
64 
65 protected:
66  virtual int update_impl(unsigned int timeout_ms, ControlData **control_data, bool already_active);
67  virtual int initialize();
68 
69 private:
70  void _read_control_data_from_position_setpoint_sub();
71 
72  int _vehicle_roi_sub = -1;
73  int _position_setpoint_triplet_sub = -1;
74  uint8_t _cur_roi_mode = vehicle_roi_s::ROI_NONE;
75 };
76 
77 
83 {
84 public:
85  InputMavlinkCmdMount(bool stabilize);
86  virtual ~InputMavlinkCmdMount();
87 
88  virtual void print_status();
89 
90 protected:
91  virtual int update_impl(unsigned int timeout_ms, ControlData **control_data, bool already_active);
92  virtual int initialize();
93 
94 private:
95  void _ack_vehicle_command(vehicle_command_s *cmd);
96 
97  int _vehicle_command_sub = -1;
98  orb_advert_t _vehicle_command_ack_pub = nullptr;
99  bool _stabilize[3] = { false, false, false };
100 
101  int32_t _mav_sys_id{1};
102  int32_t _mav_comp_id{1};
103 };
104 
105 
106 } /* namespace vmount */
class InputBase Base class for all driver input classes
Definition: input.h:52
class InputMavlinkCmdMount Input based on the VEHICLE_CMD_DO_MOUNT_CONTROL mavlink command ...
Definition: input_mavlink.h:82
__BEGIN_DECLS typedef void * orb_advert_t
ORB topic advertiser handle.
Definition: uORB.h:134
Definition: common.h:45
class InputMavlinkROI Input based on the vehicle_roi topic
Definition: input_mavlink.h:57
This defines the common API between an input and an output of the vmount driver.
Definition: common.h:55
virtual void print_status()
report status to stdout
Definition: input_mavlink.cpp:172