source: flair-dev/trunk/include/FlairFilter/UavMultiplex.h @ 13

Last change on this file since 13 was 13, checked in by Bayard Gildas, 5 years ago

formatting script + include reformatted

File size: 4.1 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5/*!
6 * \file UavMultiplex.h
7 * \brief Class defining uav multiplexing
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2014/04/11
10 * \version 4.0
11 */
12
13#ifndef UAVMULTIPLEX_H
14#define UAVMULTIPLEX_H
15
16#include <IODevice.h>
17#include <stdint.h>
18
19namespace flair {
20namespace core {
21class FrameworkManager;
22class io_data;
23}
24namespace gui {
25class TabWidget;
26class Layout;
27}
28}
29
30class UavMultiplex_impl;
31
32namespace flair {
33namespace filter {
34/*! \class UavMultiplex
35*
36* \brief Class defining uav multiplexing
37*/
38class UavMultiplex : public core::IODevice {
39public:
40  /*!
41  * \brief Constructor
42  *
43  * Construct a uav multiplexing
44  *
45  * \param parent parent
46  * \param name name
47  */
48  UavMultiplex(const core::FrameworkManager *parent, std::string name);
49
50  /*!
51  * \brief Destructor
52  *
53  */
54  ~UavMultiplex();
55
56  /*!
57  * \brief Set roll torque
58  *
59  * roll torque is placed in input(0,0)
60  *
61  * \param value value between -1 and 1
62  */
63  void SetRoll(float value);
64
65  /*!
66  * \brief Set pitch torque
67  *
68  * pitch torque is placed in input(1,0)
69  *
70  * \param value value between -1 and 1
71  */
72  void SetPitch(float value);
73
74  /*!
75  * \brief Set yaw torque
76  *
77  * yaw torque is placed in input(2,0)
78  *
79  * \param value value between -1 and 1
80  */
81  void SetYaw(float value);
82
83  /*!
84  * \brief Set thrust
85  *
86  * thrust is placed in input(3,0)
87  *
88  * \param value value between 0 and 1
89  */
90  void SetThrust(float value);
91
92  /*!
93  * \brief Set roll trim
94  *
95  * trim is placed in input(4,0)
96  *
97  * \param value value
98  */
99  void SetRollTrim(float value);
100
101  /*!
102  * \brief Set pitch trim
103  *
104  * trim is placed in input(5,0)
105  *
106  * \param value value
107  */
108  void SetPitchTrim(float value);
109
110  /*!
111  * \brief Set yaw trim
112  *
113  * trim is placed in input(6,0)
114  *
115  * \param value value
116  */
117  void SetYawTrim(float value);
118
119  /*!
120  * \brief Update using provided datas
121  *
122  * Uses values specified by Set*().
123  *
124  * \param time time of the update
125  */
126  void Update(core::Time time);
127
128  /*!
129  * \brief Lock user interface
130  *
131  * User interface will be grayed out.\n
132  * Use it do disallow changes when flying.
133  *
134  */
135  void LockUserInterface(void) const;
136
137  /*!
138  * \brief Unlock user interface
139  *
140  * User interface will be enabled.\n
141  *
142  */
143  void UnlockUserInterface(void) const;
144
145  /*!
146  * \brief Layout
147  *
148  * Layout to place custom widgets.\n
149  *
150  * \return the layout
151  */
152  gui::Layout *GetLayout(void) const;
153
154  /*!
155  * \brief Use default plot
156  *
157  * Derived class can implement this function do draw default plot.
158  *
159  */
160  virtual void UseDefaultPlot(void){};
161
162  /*!
163  * \brief Motors count
164  *
165  * This function must be reimplemented, in order to get the number of motors.
166  *
167  * \return motors count
168  */
169  virtual uint8_t MotorsCount(void) const = 0;
170
171  /*!
172  * \brief Multiplex value
173  *
174  * Get the mutliplexed value of a motor, if SetMultiplexComboBox() was used.\n
175  *
176  * \param index index of the motor, from 0 to MotorsCount()
177  * \return multiplexed index of the motor
178  */
179  int MultiplexValue(int index) const;
180
181  /*!
182  * \brief Get TabWidget
183  *
184  * Usefull to add tabs.\n
185  *
186  * \return the TabWidget
187  */
188  gui::TabWidget *GetTabWidget(void) const;
189
190protected:
191  /*!
192  * \brief Set multiplex ComboBox
193  *
194  * Draws a ComboBox to define motor multiplexing. \n
195  * This is used to change the order of the output motors.
196  *
197  * \param name description of the motor (ex front left)
198  * \param index index of the motor, from 0 to MotorsCount()
199  */
200  void SetMultiplexComboBox(std::string name, int index);
201
202private:
203  /*!
204  * \brief Update using provided datas
205  *
206  * This function is automatically called by ProcessUpdate()
207  * of the Object::Parent's if its Object::ObjectType is "IODevice". \n
208  * This function must be reimplemented, in order to process the data from the
209  *parent.
210  *
211  * \param data data from the parent to process
212  */
213  virtual void UpdateFrom(const core::io_data *data) = 0;
214
215  UavMultiplex_impl *pimpl_;
216};
217} // end namespace filter
218} // end namespace flair
219#endif // UAVMULTIPLEX_H
Note: See TracBrowser for help on using the repository browser.