PX4 Firmware
PX4 Autopilot Software http://px4.io
input.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 
34 /**
35  * @file input.h
36  * @author Beat Küng <beat-kueng@gmx.net>
37  *
38  */
39 
40 #pragma once
41 
42 #include "common.h"
43 
44 namespace vmount
45 {
46 
47 
48 /**
49  ** class InputBase
50  * Base class for all driver input classes
51  */
52 class InputBase
53 {
54 public:
55  virtual ~InputBase() {}
56 
57  /**
58  * Wait for an input update, with a timeout.
59  * @param timeout_ms timeout in ms
60  * @param control_data unchanged on error. On success it is nullptr if no new
61  * data is available, otherwise set to an object.
62  * If it is set, the returned object will not be changed for
63  * subsequent calls to update() that return no new data
64  * (in other words: if (some) control_data values change,
65  * non-null will be returned).
66  * @param already_active true if the mode was already active last time, false if it was not and "major"
67  * change is necessary such as big stick movement for RC.
68  * @return 0 on success, <0 otherwise
69  */
70  virtual int update(unsigned int timeout_ms, ControlData **control_data, bool already_active);
71 
72  /** report status to stdout */
73  virtual void print_status() = 0;
74 
75 protected:
76  virtual int update_impl(unsigned int timeout_ms, ControlData **control_data, bool already_active) = 0;
77 
78  virtual int initialize() { return 0; }
79 
80  void control_data_set_lon_lat(double lon, double lat, float altitude, float roll_angle = 0.f,
81  float pitch_fixed_angle = -10.f);
82 
84 
85 private:
86  bool _initialized = false;
87 };
88 
89 
90 } /* namespace vmount */
virtual int update(unsigned int timeout_ms, ControlData **control_data, bool already_active)
Wait for an input update, with a timeout.
Definition: input.cpp:46
virtual ~InputBase()
Definition: input.h:55
static int timeout_ms
ControlData _control_data
Definition: input.h:83
Definition: common.h:45
bool _initialized
Definition: input.h:86
virtual int initialize()
Definition: input.h:78
class InputBase Base class for all driver input classes
Definition: input.h:52
Vector< float, 6 > f(float t, const Matrix< float, 6, 1 > &, const Matrix< float, 3, 1 > &)
Definition: integration.cpp:8
virtual void print_status()=0
report status to stdout
This defines the common API between an input and an output of the vmount driver.
Definition: common.h:55
virtual int update_impl(unsigned int timeout_ms, ControlData **control_data, bool already_active)=0
void control_data_set_lon_lat(double lon, double lat, float altitude, float roll_angle=0.f, float pitch_fixed_angle=-10.f)
Definition: input.cpp:66