diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..d12c043 --- /dev/null +++ b/annotated.html @@ -0,0 +1,111 @@ + + + + + + + +mrs_uav_hw_api: Class List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + +
 Nmrs_uav_hw_api
 CCommonHandlers_tA structure with methods and variables provided to the HW API Plugin
 CDummyApi
 CHwApiManager
 CMrsUavHwApiInterface for the HW API Plugin
 CPublishers_tA structure with publisher methods provided to the HW API Plugin. The plugin can call these methods at will to provided data to the MRS UAV System. In case the HW API Plugin intents to publish data, the respective varible "produces_***" in the HW API Capabilities of the plugin is supposed to be fill in
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 0000000..96a86c3 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,10 @@ +var annotated_dup = +[ + [ "mrs_uav_hw_api", null, [ + [ "CommonHandlers_t", "structmrs__uav__hw__api_1_1CommonHandlers__t.html", "structmrs__uav__hw__api_1_1CommonHandlers__t" ], + [ "DummyApi", "classmrs__uav__hw__api_1_1DummyApi.html", "classmrs__uav__hw__api_1_1DummyApi" ], + [ "HwApiManager", "classmrs__uav__hw__api_1_1HwApiManager.html", "classmrs__uav__hw__api_1_1HwApiManager" ], + [ "MrsUavHwApi", "classmrs__uav__hw__api_1_1MrsUavHwApi.html", "classmrs__uav__hw__api_1_1MrsUavHwApi" ], + [ "Publishers_t", "structmrs__uav__hw__api_1_1Publishers__t.html", "structmrs__uav__hw__api_1_1Publishers__t" ] + ] ] +]; \ No newline at end of file diff --git a/api_8h_source.html b/api_8h_source.html new file mode 100644 index 0000000..2785c07 --- /dev/null +++ b/api_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +mrs_uav_hw_api: include/mrs_uav_hw_api/api.h Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
api.h
+
+
+
1 #ifndef MRS_UAV_HW_API_H
+
2 #define MRS_UAV_HW_API_H
+
3 
+
4 /* includes //{ */
+
5 
+
6 #include <ros/ros.h>
+
7 
+
8 #include <mrs_lib/subscribe_handler.h>
+
9 
+
10 #include <mrs_uav_hw_api/common_handlers.h>
+
11 
+
12 #include <mrs_msgs/HwApiActuatorCmd.h>
+
13 #include <mrs_msgs/HwApiControlGroupCmd.h>
+
14 #include <mrs_msgs/HwApiAttitudeCmd.h>
+
15 #include <mrs_msgs/HwApiAttitudeRateCmd.h>
+
16 #include <mrs_msgs/HwApiAccelerationHdgRateCmd.h>
+
17 #include <mrs_msgs/HwApiAccelerationHdgCmd.h>
+
18 #include <mrs_msgs/HwApiVelocityHdgRateCmd.h>
+
19 #include <mrs_msgs/HwApiVelocityHdgCmd.h>
+
20 #include <mrs_msgs/HwApiPositionCmd.h>
+
21 #include <mrs_msgs/HwApiStatus.h>
+
22 #include <mrs_msgs/HwApiCapabilities.h>
+
23 #include <mrs_msgs/TrackerCommand.h>
+
24 
+
25 //}
+
26 
+
27 namespace mrs_uav_hw_api
+
28 {
+
29 
+
33 class MrsUavHwApi {
+
34 
+
35 public:
+
42  virtual void initialize(const ros::NodeHandle& parent_nh, std::shared_ptr<mrs_uav_hw_api::CommonHandlers_t> common_handlers) = 0;
+
43 
+
50  virtual mrs_msgs::HwApiStatus getStatus() = 0;
+
51 
+
57  virtual mrs_msgs::HwApiCapabilities getCapabilities() = 0;
+
58 
+
59  // --------------------------------------------------------------
+
60  // | topic callbacks |
+
61  // --------------------------------------------------------------
+
62 
+
70  virtual bool callbackActuatorCmd(const mrs_msgs::HwApiActuatorCmd::ConstPtr msg) = 0;
+
71 
+
79  virtual bool callbackControlGroupCmd(const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg) = 0;
+
80 
+
88  virtual bool callbackAttitudeRateCmd(const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg) = 0;
+
89 
+
97  virtual bool callbackAttitudeCmd(const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg) = 0;
+
98 
+
106  virtual bool callbackAccelerationHdgRateCmd(const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg) = 0;
+
107 
+
115  virtual bool callbackAccelerationHdgCmd(const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg) = 0;
+
116 
+
124  virtual bool callbackVelocityHdgRateCmd(const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg) = 0;
+
125 
+
133  virtual bool callbackVelocityHdgCmd(const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg) = 0;
+
134 
+
142  virtual bool callbackPositionCmd(const mrs_msgs::HwApiPositionCmd::ConstPtr msg) = 0;
+
143 
+
150  virtual void callbackTrackerCmd(const mrs_msgs::TrackerCommand::ConstPtr msg) = 0;
+
151 
+
152  // --------------------------------------------------------------
+
153  // | service callbacks |
+
154  // --------------------------------------------------------------
+
155 
+
163  virtual std::tuple<bool, std::string> callbackArming(const bool& request) = 0;
+
164 
+
171  virtual std::tuple<bool, std::string> callbackOffboard(void) = 0;
+
172 
+
176  virtual ~MrsUavHwApi() = default;
+
177 };
+
178 
+
179 } // namespace mrs_uav_hw_api
+
180 
+
181 #endif
+
+
+
mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgRateCmd
virtual bool callbackAccelerationHdgRateCmd(const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)=0
Callback for the incoming Acceleration+HdgRateCmd control reference.
+
mrs_uav_hw_api::MrsUavHwApi::getCapabilities
virtual mrs_msgs::HwApiCapabilities getCapabilities()=0
Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (af...
+
mrs_uav_hw_api::MrsUavHwApi::callbackActuatorCmd
virtual bool callbackActuatorCmd(const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)=0
Callback for the incoming ActuatorCmd control reference.
+
mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgRateCmd
virtual bool callbackVelocityHdgRateCmd(const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)=0
Callback for the incoming Velocity+HdgRateCmd control reference.
+
mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeCmd
virtual bool callbackAttitudeCmd(const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)=0
Callback for the incoming Attitude+ThrottleCmd control reference.
+
mrs_uav_hw_api::MrsUavHwApi::~MrsUavHwApi
virtual ~MrsUavHwApi()=default
Destructor.
+
mrs_uav_hw_api::MrsUavHwApi::initialize
virtual void initialize(const ros::NodeHandle &parent_nh, std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t > common_handlers)=0
The initialization method. This will be called only once at the beginning of the lifetime of the plug...
+
mrs_uav_hw_api::MrsUavHwApi::callbackPositionCmd
virtual bool callbackPositionCmd(const mrs_msgs::HwApiPositionCmd::ConstPtr msg)=0
Callback for the incoming Velocity+PositionCmd control reference.
+
mrs_uav_hw_api::MrsUavHwApi::callbackArming
virtual std::tuple< bool, std::string > callbackArming(const bool &request)=0
Callback for a service call for arming/disarming the flight controller.
+
mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgCmd
virtual bool callbackAccelerationHdgCmd(const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)=0
Callback for the incoming Acceleration+HdgCmd control reference.
+
mrs_uav_hw_api::MrsUavHwApi
Interface for the HW API Plugin.
Definition: api.h:33
+
mrs_uav_hw_api::MrsUavHwApi::callbackOffboard
virtual std::tuple< bool, std::string > callbackOffboard(void)=0
Callback for a service call for switching the flight controller to the "offboard" mode....
+
mrs_uav_hw_api::MrsUavHwApi::callbackControlGroupCmd
virtual bool callbackControlGroupCmd(const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)=0
Callback for the incoming ControlGroupCmd control reference.
+
mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeRateCmd
virtual bool callbackAttitudeRateCmd(const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)=0
Callback for the incoming AttitudeRate+ThrottleCmd control reference.
+
mrs_uav_hw_api::MrsUavHwApi::getStatus
virtual mrs_msgs::HwApiStatus getStatus()=0
Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the ...
+
mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgCmd
virtual bool callbackVelocityHdgCmd(const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)=0
Callback for the incoming Velocity+HdgCmd control reference.
+
mrs_uav_hw_api::MrsUavHwApi::callbackTrackerCmd
virtual void callbackTrackerCmd(const mrs_msgs::TrackerCommand::ConstPtr msg)=0
Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator ...
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/bc_s.png differ diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/bdwn.png differ diff --git a/classes.html b/classes.html new file mode 100644 index 0000000..cef6042 --- /dev/null +++ b/classes.html @@ -0,0 +1,124 @@ + + + + + + + +mrs_uav_hw_api: Class Index + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
c | d | h | m | p
+ + + + + + + + + + + + + + + +
  c  
+
  d  
+
  h  
+
  m  
+
  p  
+
CommonHandlers_t (mrs_uav_hw_api)   DummyApi (mrs_uav_hw_api)   HwApiManager (mrs_uav_hw_api)   MrsUavHwApi (mrs_uav_hw_api)   Publishers_t (mrs_uav_hw_api)   
+
c | d | h | m | p
+
+
+ + + + diff --git a/classmrs__uav__hw__api_1_1DummyApi-members.html b/classmrs__uav__hw__api_1_1DummyApi-members.html new file mode 100644 index 0000000..f4a8d57 --- /dev/null +++ b/classmrs__uav__hw__api_1_1DummyApi-members.html @@ -0,0 +1,120 @@ + + + + + + + +mrs_uav_hw_api: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
mrs_uav_hw_api::DummyApi Member List
+
+
+ +

This is the complete list of members for mrs_uav_hw_api::DummyApi, including all inherited members.

+ + + + + + + + + + + + + + + + + +
callbackAccelerationHdgCmd(const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
callbackAccelerationHdgRateCmd(const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
callbackActuatorCmd(const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
callbackArming(const bool &request)mrs_uav_hw_api::DummyApivirtual
callbackAttitudeCmd(const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
callbackAttitudeRateCmd(const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
callbackControlGroupCmd(const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
callbackOffboard(void)mrs_uav_hw_api::DummyApivirtual
callbackPositionCmd(const mrs_msgs::HwApiPositionCmd::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
callbackTrackerCmd(const mrs_msgs::TrackerCommand::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
callbackVelocityHdgCmd(const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
callbackVelocityHdgRateCmd(const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)mrs_uav_hw_api::DummyApivirtual
getCapabilities()mrs_uav_hw_api::DummyApivirtual
getStatus()mrs_uav_hw_api::DummyApivirtual
initialize(const ros::NodeHandle &parent_nh, std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t > common_handlers)mrs_uav_hw_api::DummyApivirtual
~MrsUavHwApi()=defaultmrs_uav_hw_api::MrsUavHwApivirtual
+
+ + + + diff --git a/classmrs__uav__hw__api_1_1DummyApi.html b/classmrs__uav__hw__api_1_1DummyApi.html new file mode 100644 index 0000000..c52536a --- /dev/null +++ b/classmrs__uav__hw__api_1_1DummyApi.html @@ -0,0 +1,729 @@ + + + + + + + +mrs_uav_hw_api: mrs_uav_hw_api::DummyApi Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
mrs_uav_hw_api::DummyApi Class Reference
+
+
+
+ + Inheritance diagram for mrs_uav_hw_api::DummyApi:
+
+
+ +
+ + Collaboration diagram for mrs_uav_hw_api::DummyApi:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void initialize (const ros::NodeHandle &parent_nh, std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t > common_handlers)
 The initialization method. This will be called only once at the beginning of the lifetime of the plugin (after initialize()). More...
 
mrs_msgs::HwApiStatus getStatus ()
 Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the status, which will be publisher by the plugin manager. More...
 
mrs_msgs::HwApiCapabilities getCapabilities ()
 Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (after initialize()). More...
 
bool callbackActuatorCmd (const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)
 Callback for the incoming ActuatorCmd control reference. More...
 
bool callbackControlGroupCmd (const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)
 Callback for the incoming ControlGroupCmd control reference. More...
 
bool callbackAttitudeRateCmd (const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)
 Callback for the incoming AttitudeRate+ThrottleCmd control reference. More...
 
bool callbackAttitudeCmd (const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)
 Callback for the incoming Attitude+ThrottleCmd control reference. More...
 
bool callbackAccelerationHdgRateCmd (const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)
 Callback for the incoming Acceleration+HdgRateCmd control reference. More...
 
bool callbackAccelerationHdgCmd (const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)
 Callback for the incoming Acceleration+HdgCmd control reference. More...
 
bool callbackVelocityHdgRateCmd (const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)
 Callback for the incoming Velocity+HdgRateCmd control reference. More...
 
bool callbackVelocityHdgCmd (const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)
 Callback for the incoming Velocity+HdgCmd control reference. More...
 
bool callbackPositionCmd (const mrs_msgs::HwApiPositionCmd::ConstPtr msg)
 Callback for the incoming Velocity+PositionCmd control reference. More...
 
void callbackTrackerCmd (const mrs_msgs::TrackerCommand::ConstPtr msg)
 Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator of the MRS UAV System and it can be used as a source for feed forward control action. More...
 
std::tuple< bool, std::string > callbackArming (const bool &request)
 Callback for a service call for arming/disarming the flight controller. More...
 
std::tuple< bool, std::string > callbackOffboard (void)
 Callback for a service call for switching the flight controller to the "offboard" mode. When in offboard mode, the flight controller is using the provided reference commands for control. More...
 
- Public Member Functions inherited from mrs_uav_hw_api::MrsUavHwApi
+virtual ~MrsUavHwApi ()=default
 Destructor.
 
+

Member Function Documentation

+ +

◆ callbackAccelerationHdgCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
bool mrs_uav_hw_api::DummyApi::callbackAccelerationHdgCmd (const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming Acceleration+HdgCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackAccelerationHdgRateCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
bool mrs_uav_hw_api::DummyApi::callbackAccelerationHdgRateCmd (const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming Acceleration+HdgRateCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackActuatorCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
bool mrs_uav_hw_api::DummyApi::callbackActuatorCmd (const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming ActuatorCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackArming()

+ +
+
+ + + + + +
+ + + + + + + + +
std::tuple< bool, std::string > mrs_uav_hw_api::DummyApi::callbackArming (const bool & request)
+
+virtual
+
+ +

Callback for a service call for arming/disarming the flight controller.

+
Parameters
+ + +
requestArm/Disarm.
+
+
+
Returns
tuple(succes, message)
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackAttitudeCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
bool mrs_uav_hw_api::DummyApi::callbackAttitudeCmd (const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming Attitude+ThrottleCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackAttitudeRateCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
bool mrs_uav_hw_api::DummyApi::callbackAttitudeRateCmd (const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming AttitudeRate+ThrottleCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackControlGroupCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
bool mrs_uav_hw_api::DummyApi::callbackControlGroupCmd (const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming ControlGroupCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackOffboard()

+ +
+
+ + + + + +
+ + + + + + + + +
std::tuple< bool, std::string > mrs_uav_hw_api::DummyApi::callbackOffboard (void )
+
+virtual
+
+ +

Callback for a service call for switching the flight controller to the "offboard" mode. When in offboard mode, the flight controller is using the provided reference commands for control.

+
Returns
tuple(succes, message)
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackPositionCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
bool mrs_uav_hw_api::DummyApi::callbackPositionCmd (const mrs_msgs::HwApiPositionCmd::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming Velocity+PositionCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackTrackerCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
void mrs_uav_hw_api::DummyApi::callbackTrackerCmd (const mrs_msgs::TrackerCommand::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator of the MRS UAV System and it can be used as a source for feed forward control action.

+
Parameters
+ + +
msgincoming ROS message
+
+
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackVelocityHdgCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
bool mrs_uav_hw_api::DummyApi::callbackVelocityHdgCmd (const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming Velocity+HdgCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ callbackVelocityHdgRateCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
bool mrs_uav_hw_api::DummyApi::callbackVelocityHdgRateCmd (const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)
+
+virtual
+
+ +

Callback for the incoming Velocity+HdgRateCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ getCapabilities()

+ +
+
+ + + + + +
+ + + + + + + +
mrs_msgs::HwApiCapabilities mrs_uav_hw_api::DummyApi::getCapabilities ()
+
+virtual
+
+ +

Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (after initialize()).

+
Returns
The capabilities ROS message.
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + +
+ + + + + + + +
mrs_msgs::HwApiStatus mrs_uav_hw_api::DummyApi::getStatus ()
+
+virtual
+
+ +

Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the status, which will be publisher by the plugin manager.

+
Returns
The status ROS message.
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void mrs_uav_hw_api::DummyApi::initialize (const ros::NodeHandle & parent_nh,
std::shared_ptr< mrs_uav_hw_api::CommonHandlers_tcommon_handlers 
)
+
+virtual
+
+ +

The initialization method. This will be called only once at the beginning of the lifetime of the plugin (after initialize()).

+
Parameters
+ + + +
parent_nhNode handle of the HW API plugin manager. Use this to create subscibers, publisher, etc.
common_handlersStructure pre-filled with useful variables, methods and objects that the plugin can use.
+
+
+ +

Implements mrs_uav_hw_api::MrsUavHwApi.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classmrs__uav__hw__api_1_1DummyApi.js b/classmrs__uav__hw__api_1_1DummyApi.js new file mode 100644 index 0000000..a728e19 --- /dev/null +++ b/classmrs__uav__hw__api_1_1DummyApi.js @@ -0,0 +1,18 @@ +var classmrs__uav__hw__api_1_1DummyApi = +[ + [ "callbackAccelerationHdgCmd", "classmrs__uav__hw__api_1_1DummyApi.html#ac904bff4c9b37aa2b5ee8aa30d922f79", null ], + [ "callbackAccelerationHdgRateCmd", "classmrs__uav__hw__api_1_1DummyApi.html#af8681be68b7f7e7cdbf12c8ce22fbe31", null ], + [ "callbackActuatorCmd", "classmrs__uav__hw__api_1_1DummyApi.html#ac87d448f75cbd8a1b8d4da0467d163e9", null ], + [ "callbackArming", "classmrs__uav__hw__api_1_1DummyApi.html#a565c955f9541ccb72a904f67bd02f83c", null ], + [ "callbackAttitudeCmd", "classmrs__uav__hw__api_1_1DummyApi.html#afd1ca6edaef8e060de452de555422191", null ], + [ "callbackAttitudeRateCmd", "classmrs__uav__hw__api_1_1DummyApi.html#a4c628110de00a3df84e44cad7190e364", null ], + [ "callbackControlGroupCmd", "classmrs__uav__hw__api_1_1DummyApi.html#a218c3ffb446ca0b45f241e2790a4b684", null ], + [ "callbackOffboard", "classmrs__uav__hw__api_1_1DummyApi.html#a1c8081a81f3f1a684cafecd627e75e22", null ], + [ "callbackPositionCmd", "classmrs__uav__hw__api_1_1DummyApi.html#ad6ef3a2c6514595361959664cf6af850", null ], + [ "callbackTrackerCmd", "classmrs__uav__hw__api_1_1DummyApi.html#aa022a02c75d33e4e93f112537a1fdf86", null ], + [ "callbackVelocityHdgCmd", "classmrs__uav__hw__api_1_1DummyApi.html#a9dbd76d8646e8414c4c4b6405e988f00", null ], + [ "callbackVelocityHdgRateCmd", "classmrs__uav__hw__api_1_1DummyApi.html#a3cbaa93b72033097ece1f833d022968f", null ], + [ "getCapabilities", "classmrs__uav__hw__api_1_1DummyApi.html#a3328034dca690d917ce2689c1eb13b52", null ], + [ "getStatus", "classmrs__uav__hw__api_1_1DummyApi.html#af7bbab47dba560abd5a76a273c07e157", null ], + [ "initialize", "classmrs__uav__hw__api_1_1DummyApi.html#a12c9b64ebdd7787cb78f23f75892d76d", null ] +]; \ No newline at end of file diff --git a/classmrs__uav__hw__api_1_1DummyApi__coll__graph.map b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.map new file mode 100644 index 0000000..905ba0a --- /dev/null +++ b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classmrs__uav__hw__api_1_1DummyApi__coll__graph.md5 b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.md5 new file mode 100644 index 0000000..936291d --- /dev/null +++ b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.md5 @@ -0,0 +1 @@ +5d3f612062590287f59255e19b5f03fa \ No newline at end of file diff --git a/classmrs__uav__hw__api_1_1DummyApi__coll__graph.png b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.png new file mode 100644 index 0000000..54e84f0 Binary files /dev/null and b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.png differ diff --git a/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.map b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.map new file mode 100644 index 0000000..905ba0a --- /dev/null +++ b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.md5 b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.md5 new file mode 100644 index 0000000..936291d --- /dev/null +++ b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.md5 @@ -0,0 +1 @@ +5d3f612062590287f59255e19b5f03fa \ No newline at end of file diff --git a/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.png b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.png new file mode 100644 index 0000000..54e84f0 Binary files /dev/null and b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.png differ diff --git a/classmrs__uav__hw__api_1_1HwApiManager-members.html b/classmrs__uav__hw__api_1_1HwApiManager-members.html new file mode 100644 index 0000000..8324b51 --- /dev/null +++ b/classmrs__uav__hw__api_1_1HwApiManager-members.html @@ -0,0 +1,105 @@ + + + + + + + +mrs_uav_hw_api: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
mrs_uav_hw_api::HwApiManager Member List
+
+
+ +

This is the complete list of members for mrs_uav_hw_api::HwApiManager, including all inherited members.

+ + +
onInit() (defined in mrs_uav_hw_api::HwApiManager)mrs_uav_hw_api::HwApiManagervirtual
+
+ + + + diff --git a/classmrs__uav__hw__api_1_1HwApiManager.html b/classmrs__uav__hw__api_1_1HwApiManager.html new file mode 100644 index 0000000..3b0b43a --- /dev/null +++ b/classmrs__uav__hw__api_1_1HwApiManager.html @@ -0,0 +1,137 @@ + + + + + + + +mrs_uav_hw_api: mrs_uav_hw_api::HwApiManager Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
mrs_uav_hw_api::HwApiManager Class Reference
+
+
+
+ + Inheritance diagram for mrs_uav_hw_api::HwApiManager:
+
+
+ +
+ + Collaboration diagram for mrs_uav_hw_api::HwApiManager:
+
+
+ + + + + +

+Public Member Functions

+virtual void onInit ()
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classmrs__uav__hw__api_1_1HwApiManager.js b/classmrs__uav__hw__api_1_1HwApiManager.js new file mode 100644 index 0000000..3147d51 --- /dev/null +++ b/classmrs__uav__hw__api_1_1HwApiManager.js @@ -0,0 +1,4 @@ +var classmrs__uav__hw__api_1_1HwApiManager = +[ + [ "onInit", "classmrs__uav__hw__api_1_1HwApiManager.html#ad9caf16a0e5b196a476b2b870af92627", null ] +]; \ No newline at end of file diff --git a/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.map b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.map new file mode 100644 index 0000000..489681a --- /dev/null +++ b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.md5 b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.md5 new file mode 100644 index 0000000..ffb437c --- /dev/null +++ b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.md5 @@ -0,0 +1 @@ +2554979daf08ced293db3ecfe016a414 \ No newline at end of file diff --git a/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.png b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.png new file mode 100644 index 0000000..b83dc88 Binary files /dev/null and b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.png differ diff --git a/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.map b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.map new file mode 100644 index 0000000..489681a --- /dev/null +++ b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.md5 b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.md5 new file mode 100644 index 0000000..ffb437c --- /dev/null +++ b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.md5 @@ -0,0 +1 @@ +2554979daf08ced293db3ecfe016a414 \ No newline at end of file diff --git a/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.png b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.png new file mode 100644 index 0000000..b83dc88 Binary files /dev/null and b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.png differ diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi-members.html b/classmrs__uav__hw__api_1_1MrsUavHwApi-members.html new file mode 100644 index 0000000..e345c37 --- /dev/null +++ b/classmrs__uav__hw__api_1_1MrsUavHwApi-members.html @@ -0,0 +1,120 @@ + + + + + + + +mrs_uav_hw_api: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
mrs_uav_hw_api::MrsUavHwApi Member List
+
+
+ +

This is the complete list of members for mrs_uav_hw_api::MrsUavHwApi, including all inherited members.

+ + + + + + + + + + + + + + + + + +
callbackAccelerationHdgCmd(const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackAccelerationHdgRateCmd(const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackActuatorCmd(const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackArming(const bool &request)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackAttitudeCmd(const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackAttitudeRateCmd(const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackControlGroupCmd(const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackOffboard(void)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackPositionCmd(const mrs_msgs::HwApiPositionCmd::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackTrackerCmd(const mrs_msgs::TrackerCommand::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackVelocityHdgCmd(const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
callbackVelocityHdgRateCmd(const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)=0mrs_uav_hw_api::MrsUavHwApipure virtual
getCapabilities()=0mrs_uav_hw_api::MrsUavHwApipure virtual
getStatus()=0mrs_uav_hw_api::MrsUavHwApipure virtual
initialize(const ros::NodeHandle &parent_nh, std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t > common_handlers)=0mrs_uav_hw_api::MrsUavHwApipure virtual
~MrsUavHwApi()=defaultmrs_uav_hw_api::MrsUavHwApivirtual
+
+ + + + diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi.html b/classmrs__uav__hw__api_1_1MrsUavHwApi.html new file mode 100644 index 0000000..a69a1f8 --- /dev/null +++ b/classmrs__uav__hw__api_1_1MrsUavHwApi.html @@ -0,0 +1,724 @@ + + + + + + + +mrs_uav_hw_api: mrs_uav_hw_api::MrsUavHwApi Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
mrs_uav_hw_api::MrsUavHwApi Class Referenceabstract
+
+
+ +

Interface for the HW API Plugin. + More...

+ +

#include <api.h>

+
+ + Inheritance diagram for mrs_uav_hw_api::MrsUavHwApi:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void initialize (const ros::NodeHandle &parent_nh, std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t > common_handlers)=0
 The initialization method. This will be called only once at the beginning of the lifetime of the plugin (after initialize()). More...
 
virtual mrs_msgs::HwApiStatus getStatus ()=0
 Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the status, which will be publisher by the plugin manager. More...
 
virtual mrs_msgs::HwApiCapabilities getCapabilities ()=0
 Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (after initialize()). More...
 
virtual bool callbackActuatorCmd (const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)=0
 Callback for the incoming ActuatorCmd control reference. More...
 
virtual bool callbackControlGroupCmd (const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)=0
 Callback for the incoming ControlGroupCmd control reference. More...
 
virtual bool callbackAttitudeRateCmd (const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)=0
 Callback for the incoming AttitudeRate+ThrottleCmd control reference. More...
 
virtual bool callbackAttitudeCmd (const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)=0
 Callback for the incoming Attitude+ThrottleCmd control reference. More...
 
virtual bool callbackAccelerationHdgRateCmd (const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)=0
 Callback for the incoming Acceleration+HdgRateCmd control reference. More...
 
virtual bool callbackAccelerationHdgCmd (const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)=0
 Callback for the incoming Acceleration+HdgCmd control reference. More...
 
virtual bool callbackVelocityHdgRateCmd (const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)=0
 Callback for the incoming Velocity+HdgRateCmd control reference. More...
 
virtual bool callbackVelocityHdgCmd (const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)=0
 Callback for the incoming Velocity+HdgCmd control reference. More...
 
virtual bool callbackPositionCmd (const mrs_msgs::HwApiPositionCmd::ConstPtr msg)=0
 Callback for the incoming Velocity+PositionCmd control reference. More...
 
virtual void callbackTrackerCmd (const mrs_msgs::TrackerCommand::ConstPtr msg)=0
 Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator of the MRS UAV System and it can be used as a source for feed forward control action. More...
 
virtual std::tuple< bool, std::string > callbackArming (const bool &request)=0
 Callback for a service call for arming/disarming the flight controller. More...
 
virtual std::tuple< bool, std::string > callbackOffboard (void)=0
 Callback for a service call for switching the flight controller to the "offboard" mode. When in offboard mode, the flight controller is using the provided reference commands for control. More...
 
+virtual ~MrsUavHwApi ()=default
 Destructor.
 
+

Detailed Description

+

Interface for the HW API Plugin.

+

Member Function Documentation

+ +

◆ callbackAccelerationHdgCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgCmd (const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming Acceleration+HdgCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackAccelerationHdgRateCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgRateCmd (const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming Acceleration+HdgRateCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackActuatorCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackActuatorCmd (const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming ActuatorCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackArming()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::tuple<bool, std::string> mrs_uav_hw_api::MrsUavHwApi::callbackArming (const bool & request)
+
+pure virtual
+
+ +

Callback for a service call for arming/disarming the flight controller.

+
Parameters
+ + +
requestArm/Disarm.
+
+
+
Returns
tuple(succes, message)
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackAttitudeCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeCmd (const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming Attitude+ThrottleCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackAttitudeRateCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeRateCmd (const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming AttitudeRate+ThrottleCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackControlGroupCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackControlGroupCmd (const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming ControlGroupCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackOffboard()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::tuple<bool, std::string> mrs_uav_hw_api::MrsUavHwApi::callbackOffboard (void )
+
+pure virtual
+
+ +

Callback for a service call for switching the flight controller to the "offboard" mode. When in offboard mode, the flight controller is using the provided reference commands for control.

+
Returns
tuple(succes, message)
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackPositionCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackPositionCmd (const mrs_msgs::HwApiPositionCmd::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming Velocity+PositionCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackTrackerCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void mrs_uav_hw_api::MrsUavHwApi::callbackTrackerCmd (const mrs_msgs::TrackerCommand::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator of the MRS UAV System and it can be used as a source for feed forward control action.

+
Parameters
+ + +
msgincoming ROS message
+
+
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackVelocityHdgCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgCmd (const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming Velocity+HdgCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ callbackVelocityHdgRateCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgRateCmd (const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)
+
+pure virtual
+
+ +

Callback for the incoming Velocity+HdgRateCmd control reference.

+
Parameters
+ + +
msgincoming ROS message
+
+
+
Returns
success (true if processed).
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ getCapabilities()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mrs_msgs::HwApiCapabilities mrs_uav_hw_api::MrsUavHwApi::getCapabilities ()
+
+pure virtual
+
+ +

Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (after initialize()).

+
Returns
The capabilities ROS message.
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ getStatus()

+ +
+
+ + + + + +
+ + + + + + + +
virtual mrs_msgs::HwApiStatus mrs_uav_hw_api::MrsUavHwApi::getStatus ()
+
+pure virtual
+
+ +

Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the status, which will be publisher by the plugin manager.

+
Returns
The status ROS message.
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void mrs_uav_hw_api::MrsUavHwApi::initialize (const ros::NodeHandle & parent_nh,
std::shared_ptr< mrs_uav_hw_api::CommonHandlers_tcommon_handlers 
)
+
+pure virtual
+
+ +

The initialization method. This will be called only once at the beginning of the lifetime of the plugin (after initialize()).

+
Parameters
+ + + +
parent_nhNode handle of the HW API plugin manager. Use this to create subscibers, publisher, etc.
common_handlersStructure pre-filled with useful variables, methods and objects that the plugin can use.
+
+
+ +

Implemented in mrs_uav_hw_api::DummyApi.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi.js b/classmrs__uav__hw__api_1_1MrsUavHwApi.js new file mode 100644 index 0000000..c723da5 --- /dev/null +++ b/classmrs__uav__hw__api_1_1MrsUavHwApi.js @@ -0,0 +1,19 @@ +var classmrs__uav__hw__api_1_1MrsUavHwApi = +[ + [ "~MrsUavHwApi", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#ac56c138bfac82f134d2c67558d49e51d", null ], + [ "callbackAccelerationHdgCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#af88b2aa16a8e88662cf6c16747acdf82", null ], + [ "callbackAccelerationHdgRateCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a5903740fdd654da8e0b1f0fcd34d852b", null ], + [ "callbackActuatorCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a397145b920c1600b974fa3a5d107411a", null ], + [ "callbackArming", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#ad549fd61bfa9996b1aaa49946d814156", null ], + [ "callbackAttitudeCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a537f4a53b84aee069bc3a8dd6a6620f7", null ], + [ "callbackAttitudeRateCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#afb549fb51dbf0c05b082b1de9cd6c30b", null ], + [ "callbackControlGroupCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#ada32d79a7512a6cba1b38d48a7926f18", null ], + [ "callbackOffboard", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#aa4e0e43507391daf90f115d941b5aaee", null ], + [ "callbackPositionCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#abfaa7f3e38b567f9005152e8bacb23fb", null ], + [ "callbackTrackerCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a610c4698eb909da8a5ab05b730347318", null ], + [ "callbackVelocityHdgCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a624d2ec97c6c02118e214216614572b7", null ], + [ "callbackVelocityHdgRateCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a47d1818995e6bc815f4e8cad789c4232", null ], + [ "getCapabilities", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a654f724908c2a601f69b66f44f94092f", null ], + [ "getStatus", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a7d8267f792fffb3a6118df0db21d1202", null ], + [ "initialize", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a8889e80844000735944372644daf4a19", null ] +]; \ No newline at end of file diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.map b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.map new file mode 100644 index 0000000..a3d2711 --- /dev/null +++ b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.md5 b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.md5 new file mode 100644 index 0000000..4109d98 --- /dev/null +++ b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.md5 @@ -0,0 +1 @@ +6361212c8ebb26c526480482053a988a \ No newline at end of file diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.png b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.png new file mode 100644 index 0000000..68f676b Binary files /dev/null and b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.png differ diff --git a/closed.png b/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/closed.png differ diff --git a/common__handlers_8h_source.html b/common__handlers_8h_source.html new file mode 100644 index 0000000..39dd404 --- /dev/null +++ b/common__handlers_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +mrs_uav_hw_api: include/mrs_uav_hw_api/common_handlers.h Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
common_handlers.h
+
+
+
1 #ifndef COMMON_HANDLERS_H
+
2 #define COMMON_HANDLERS_H
+
3 
+
4 #include <mrs_uav_hw_api/publishers.h>
+
5 #include <mrs_lib/transformer.h>
+
6 
+
7 namespace mrs_uav_hw_api
+
8 {
+
9 
+
10 //}
+
11 
+
12 typedef std::function<std::string(void)> getUavName_t;
+
13 typedef std::function<std::string(void)> getBodyFrameName_t;
+
14 typedef std::function<std::string(void)> getWorldFrameName_t;
+
15 
+ +
20 {
+ +
25 
+
29  std::shared_ptr<mrs_lib::Transformer> transformer;
+
30 
+
34  getUavName_t getUavName;
+
35 
+
40  getBodyFrameName_t getBodyFrameName;
+
41 
+
45  getWorldFrameName_t getWorldFrameName;
+
46 };
+
47 
+
48 } // namespace mrs_uav_hw_api
+
49 
+
50 #endif // COMMON_HANDLERS_H
+
+
+
mrs_uav_hw_api::CommonHandlers_t::transformer
std::shared_ptr< mrs_lib::Transformer > transformer
The mrs_lib's TF2 transformer wrapper.
Definition: common_handlers.h:29
+
mrs_uav_hw_api::Publishers_t
A structure with publisher methods provided to the HW API Plugin. The plugin can call these methods a...
Definition: publishers.h:54
+
mrs_uav_hw_api::CommonHandlers_t::getUavName
getUavName_t getUavName
Method for obtaining the current "UAV_NAME" (the one set from the $UAV_NAME env variable).
Definition: common_handlers.h:34
+
mrs_uav_hw_api::CommonHandlers_t
A structure with methods and variables provided to the HW API Plugin.
Definition: common_handlers.h:19
+
mrs_uav_hw_api::CommonHandlers_t::getBodyFrameName
getBodyFrameName_t getBodyFrameName
Method for obtaining the body-fixed frame_id (as it is called by the MRS UAV System)....
Definition: common_handlers.h:40
+
mrs_uav_hw_api::CommonHandlers_t::publishers
Publishers_t publishers
A structure with publishers that the plugin should use to provide data to the MRS UAV System.
Definition: common_handlers.h:24
+
mrs_uav_hw_api::CommonHandlers_t::getWorldFrameName
getWorldFrameName_t getWorldFrameName
Method for obtaining the world-frame for marking the flight-controller's data, e.g....
Definition: common_handlers.h:45
+ + + + diff --git a/dir_61f64665b750523b32e515e683b7cce6.html b/dir_61f64665b750523b32e515e683b7cce6.html new file mode 100644 index 0000000..b3e6311 --- /dev/null +++ b/dir_61f64665b750523b32e515e683b7cce6.html @@ -0,0 +1,102 @@ + + + + + + + +mrs_uav_hw_api: include/mrs_uav_hw_api Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
mrs_uav_hw_api Directory Reference
+
+
+
+
+ + + + diff --git a/dir_61f64665b750523b32e515e683b7cce6.js b/dir_61f64665b750523b32e515e683b7cce6.js new file mode 100644 index 0000000..de501c2 --- /dev/null +++ b/dir_61f64665b750523b32e515e683b7cce6.js @@ -0,0 +1,6 @@ +var dir_61f64665b750523b32e515e683b7cce6 = +[ + [ "api.h", "api_8h_source.html", null ], + [ "common_handlers.h", "common__handlers_8h_source.html", null ], + [ "publishers.h", "publishers_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..13248b1 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,102 @@ + + + + + + + +mrs_uav_hw_api: src Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..0d826ea --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,106 @@ + + + + + + + +mrs_uav_hw_api: include Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
include Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 0000000..7b5c558 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.js @@ -0,0 +1,4 @@ +var dir_d44c64559bbebec7f509842c48db8b23 = +[ + [ "mrs_uav_hw_api", "dir_61f64665b750523b32e515e683b7cce6.html", "dir_61f64665b750523b32e515e683b7cce6" ] +]; \ No newline at end of file diff --git a/doc.png b/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/doc.png differ diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..73ecbb2 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #FFFFFF; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.png b/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/doxygen.png differ diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..ea0a7b3 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,120 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +mrs_uav_hw_api: File List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + +
  include
  mrs_uav_hw_api
 api.h
 common_handlers.h
 publishers.h
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 0000000..f1749d9 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ] +]; \ No newline at end of file diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/folderclosed.png differ diff --git a/folderopen.png b/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/folderopen.png differ diff --git a/functions.html b/functions.html new file mode 100644 index 0000000..3c8908e --- /dev/null +++ b/functions.html @@ -0,0 +1,250 @@ + + + + + + + +mrs_uav_hw_api: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+ + +

- g -

+ + +

- i -

+ + +

- p -

+ + +

- t -

+ + +

- ~ -

+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 0000000..bc8a5f2 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,176 @@ + + + + + + + +mrs_uav_hw_api: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+ + +

- g -

+ + +

- i -

+ + +

- ~ -

+
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 0000000..b7759c8 --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,165 @@ + + + + + + + +mrs_uav_hw_api: Class Members - Variables + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/graph_legend.html b/graph_legend.html new file mode 100644 index 0000000..756e09d --- /dev/null +++ b/graph_legend.html @@ -0,0 +1,161 @@ + + + + + + + +mrs_uav_hw_api: Graph Legend + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/graph_legend.md5 b/graph_legend.md5 new file mode 100644 index 0000000..8fcdccd --- /dev/null +++ b/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/graph_legend.png b/graph_legend.png new file mode 100644 index 0000000..7e2cbcf Binary files /dev/null and b/graph_legend.png differ diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..108e676 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,113 @@ + + + + + + + +mrs_uav_hw_api: Class Hierarchy + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + +
 Cmrs_uav_hw_api::CommonHandlers_tA structure with methods and variables provided to the HW API Plugin
 Cmrs_uav_hw_api::MrsUavHwApiInterface for the HW API Plugin
 Cmrs_uav_hw_api::DummyApi
 CNodelet
 Cmrs_uav_hw_api::HwApiManager
 Cmrs_uav_hw_api::Publishers_tA structure with publisher methods provided to the HW API Plugin. The plugin can call these methods at will to provided data to the MRS UAV System. In case the HW API Plugin intents to publish data, the respective varible "produces_***" in the HW API Capabilities of the plugin is supposed to be fill in
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 0000000..f3f61f7 --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,11 @@ +var hierarchy = +[ + [ "mrs_uav_hw_api::CommonHandlers_t", "structmrs__uav__hw__api_1_1CommonHandlers__t.html", null ], + [ "mrs_uav_hw_api::MrsUavHwApi", "classmrs__uav__hw__api_1_1MrsUavHwApi.html", [ + [ "mrs_uav_hw_api::DummyApi", "classmrs__uav__hw__api_1_1DummyApi.html", null ] + ] ], + [ "Nodelet", null, [ + [ "mrs_uav_hw_api::HwApiManager", "classmrs__uav__hw__api_1_1HwApiManager.html", null ] + ] ], + [ "mrs_uav_hw_api::Publishers_t", "structmrs__uav__hw__api_1_1Publishers__t.html", null ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..60e4064 --- /dev/null +++ b/index.html @@ -0,0 +1,139 @@ + + + + + + + +mrs_uav_hw_api: MRS UAV HW API (<a href="https://ctu-mrs.github.io/mrs_uav_hw_api/">Docs</a>) + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MRS UAV HW API (Docs)
+
+
+

An abstraction layer between the MRS UAV System and a UAV flight controller.

+
+

:warning: Attention please: This README is needs work.

+

The MRS UAV System 1.5 is being released and this page needs updating. Please, keep in mind that the information on this page might not be valid.

+
+

+What does it do?

+

This nodes provides an interface between any UAV flight controller (and any Simulator) and the core of the MRS UAV System. On one side, the HW API provides a unified ROS interfaces for the core as if it was a generic flight controller. On the other side, the communication with a particular hardware (or simulator) can be orchestrated using whatever is required.

+

+

+Documentation

+

https://ctu-mrs.github.io/mrs_uav_hw_api/

+

+Control output from the MRS UAV System

+

The control output can be any of the following:

+
    +
  • 3D Position + Heading
  • +
  • 3D body-frame Velocity + Heading
  • +
  • 3D body-frame Velocity + Heading rate
  • +
  • 3D body-frame Acceleration + Heading
  • +
  • 3D body-frame Acceleration + Heading rate
  • +
  • 3D world-frame Attitude + Throttle
  • +
  • body-frame Attitude rate + Throttle
  • +
  • Control groups
  • +
  • individual Actuators' throttle
  • +
+

+Data provided to the MRS UAV System

+

TODO

+

+Example HW API Plugins

+ +
+
+
+ + + + diff --git a/inherit_graph_0.map b/inherit_graph_0.map new file mode 100644 index 0000000..b1dfb6b --- /dev/null +++ b/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_0.md5 b/inherit_graph_0.md5 new file mode 100644 index 0000000..c6bfa9e --- /dev/null +++ b/inherit_graph_0.md5 @@ -0,0 +1 @@ +6b7180ae7d65330a1e5c0f9c387dd2c6 \ No newline at end of file diff --git a/inherit_graph_0.png b/inherit_graph_0.png new file mode 100644 index 0000000..187244a Binary files /dev/null and b/inherit_graph_0.png differ diff --git a/inherit_graph_1.map b/inherit_graph_1.map new file mode 100644 index 0000000..2dde71e --- /dev/null +++ b/inherit_graph_1.map @@ -0,0 +1,4 @@ + + + + diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5 new file mode 100644 index 0000000..c08ca24 --- /dev/null +++ b/inherit_graph_1.md5 @@ -0,0 +1 @@ +07fc0f972b4b3d69db4693dc149c6dff \ No newline at end of file diff --git a/inherit_graph_1.png b/inherit_graph_1.png new file mode 100644 index 0000000..23b18e2 Binary files /dev/null and b/inherit_graph_1.png differ diff --git a/inherit_graph_2.map b/inherit_graph_2.map new file mode 100644 index 0000000..d37ad91 --- /dev/null +++ b/inherit_graph_2.map @@ -0,0 +1,4 @@ + + + + diff --git a/inherit_graph_2.md5 b/inherit_graph_2.md5 new file mode 100644 index 0000000..211820f --- /dev/null +++ b/inherit_graph_2.md5 @@ -0,0 +1 @@ +8323f6188bd0156a959cb8d20812d943 \ No newline at end of file diff --git a/inherit_graph_2.png b/inherit_graph_2.png new file mode 100644 index 0000000..3611a1a Binary files /dev/null and b/inherit_graph_2.png differ diff --git a/inherit_graph_3.map b/inherit_graph_3.map new file mode 100644 index 0000000..4aeccd0 --- /dev/null +++ b/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_3.md5 b/inherit_graph_3.md5 new file mode 100644 index 0000000..45cec47 --- /dev/null +++ b/inherit_graph_3.md5 @@ -0,0 +1 @@ +28b7164be6c45f8eb41ab56d47fa802b \ No newline at end of file diff --git a/inherit_graph_3.png b/inherit_graph_3.png new file mode 100644 index 0000000..285acc0 Binary files /dev/null and b/inherit_graph_3.png differ diff --git a/inherits.html b/inherits.html new file mode 100644 index 0000000..26ab4d3 --- /dev/null +++ b/inherits.html @@ -0,0 +1,127 @@ + + + + + + + +mrs_uav_hw_api: Class Hierarchy + + + + + + + + + + + + + +
+
+ + + + + + + +
+
mrs_uav_hw_api +
+
An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + +
+ + + +
+ + + + +
+ + + + +
+ + + +
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/menu.js b/menu.js new file mode 100644 index 0000000..433c15b --- /dev/null +++ b/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 0000000..19556dd --- /dev/null +++ b/menudata.js @@ -0,0 +1,44 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"c",url:"functions.html#index_c"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"p",url:"functions.html#index_p"}, +{text:"t",url:"functions.html#index_t"}, +{text:"~",url:"functions.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"c",url:"functions_func.html#index_c"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"~",url:"functions_func.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/nav_h.png differ diff --git a/navtree.css b/navtree.css new file mode 100644 index 0000000..33341a6 --- /dev/null +++ b/navtree.css @@ -0,0 +1,146 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url("splitbar.png"); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 0000000..edc31ef --- /dev/null +++ b/navtree.js @@ -0,0 +1,544 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2019 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of version 2 of the GNU General Public License as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/Docs)", "index.html", [ + [ "What does it do?", "index.html#autotoc_md1", null ], + [ "Documentation", "index.html#autotoc_md2", [ + [ "Control output from the MRS UAV System", "index.html#autotoc_md3", null ], + [ "Data provided to the MRS UAV System", "index.html#autotoc_md4", null ] + ] ], + [ "Example HW API Plugins", "index.html#autotoc_md5", null ] + ] ], + [ "Classes", "annotated.html", [ + [ "Class List", "annotated.html", "annotated_dup" ], + [ "Class Index", "classes.html", null ], + [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], + [ "Class Members", "functions.html", [ + [ "All", "functions.html", null ], + [ "Functions", "functions_func.html", null ], + [ "Variables", "functions_vars.html", null ] + ] ] + ] ], + [ "Files", "files.html", [ + [ "File List", "files.html", "files_dup" ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +".html" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; \ No newline at end of file diff --git a/navtreeindex0.js b/navtreeindex0.js new file mode 100644 index 0000000..99e6a35 --- /dev/null +++ b/navtreeindex0.js @@ -0,0 +1,83 @@ +var NAVTREEINDEX0 = +{ +".html":[1,0,0], +"annotated.html":[1,0], +"api_8h_source.html":[2,0,0,0,0], +"classes.html":[1,1], +"classmrs__uav__hw__api_1_1DummyApi.html":[1,0,0,1], +"classmrs__uav__hw__api_1_1DummyApi.html#a12c9b64ebdd7787cb78f23f75892d76d":[1,0,0,1,14], +"classmrs__uav__hw__api_1_1DummyApi.html#a1c8081a81f3f1a684cafecd627e75e22":[1,0,0,1,7], +"classmrs__uav__hw__api_1_1DummyApi.html#a218c3ffb446ca0b45f241e2790a4b684":[1,0,0,1,6], +"classmrs__uav__hw__api_1_1DummyApi.html#a3328034dca690d917ce2689c1eb13b52":[1,0,0,1,12], +"classmrs__uav__hw__api_1_1DummyApi.html#a3cbaa93b72033097ece1f833d022968f":[1,0,0,1,11], +"classmrs__uav__hw__api_1_1DummyApi.html#a4c628110de00a3df84e44cad7190e364":[1,0,0,1,5], +"classmrs__uav__hw__api_1_1DummyApi.html#a565c955f9541ccb72a904f67bd02f83c":[1,0,0,1,3], +"classmrs__uav__hw__api_1_1DummyApi.html#a9dbd76d8646e8414c4c4b6405e988f00":[1,0,0,1,10], +"classmrs__uav__hw__api_1_1DummyApi.html#aa022a02c75d33e4e93f112537a1fdf86":[1,0,0,1,9], +"classmrs__uav__hw__api_1_1DummyApi.html#ac87d448f75cbd8a1b8d4da0467d163e9":[1,0,0,1,2], +"classmrs__uav__hw__api_1_1DummyApi.html#ac904bff4c9b37aa2b5ee8aa30d922f79":[1,0,0,1,0], +"classmrs__uav__hw__api_1_1DummyApi.html#ad6ef3a2c6514595361959664cf6af850":[1,0,0,1,8], +"classmrs__uav__hw__api_1_1DummyApi.html#af7bbab47dba560abd5a76a273c07e157":[1,0,0,1,13], +"classmrs__uav__hw__api_1_1DummyApi.html#af8681be68b7f7e7cdbf12c8ce22fbe31":[1,0,0,1,1], +"classmrs__uav__hw__api_1_1DummyApi.html#afd1ca6edaef8e060de452de555422191":[1,0,0,1,4], +"classmrs__uav__hw__api_1_1HwApiManager.html":[1,0,0,2], +"classmrs__uav__hw__api_1_1HwApiManager.html#ad9caf16a0e5b196a476b2b870af92627":[1,0,0,2,0], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html":[1,0,0,3], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#a397145b920c1600b974fa3a5d107411a":[1,0,0,3,3], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#a47d1818995e6bc815f4e8cad789c4232":[1,0,0,3,12], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#a537f4a53b84aee069bc3a8dd6a6620f7":[1,0,0,3,5], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#a5903740fdd654da8e0b1f0fcd34d852b":[1,0,0,3,2], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#a610c4698eb909da8a5ab05b730347318":[1,0,0,3,10], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#a624d2ec97c6c02118e214216614572b7":[1,0,0,3,11], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#a654f724908c2a601f69b66f44f94092f":[1,0,0,3,13], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#a7d8267f792fffb3a6118df0db21d1202":[1,0,0,3,14], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#a8889e80844000735944372644daf4a19":[1,0,0,3,15], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#aa4e0e43507391daf90f115d941b5aaee":[1,0,0,3,8], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#abfaa7f3e38b567f9005152e8bacb23fb":[1,0,0,3,9], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#ac56c138bfac82f134d2c67558d49e51d":[1,0,0,3,0], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#ad549fd61bfa9996b1aaa49946d814156":[1,0,0,3,4], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#ada32d79a7512a6cba1b38d48a7926f18":[1,0,0,3,7], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#af88b2aa16a8e88662cf6c16747acdf82":[1,0,0,3,1], +"classmrs__uav__hw__api_1_1MrsUavHwApi.html#afb549fb51dbf0c05b082b1de9cd6c30b":[1,0,0,3,6], +"common__handlers_8h_source.html":[2,0,0,0,1], +"dir_61f64665b750523b32e515e683b7cce6.html":[2,0,0,0], +"dir_d44c64559bbebec7f509842c48db8b23.html":[2,0,0], +"files.html":[2,0], +"functions.html":[1,3,0], +"functions_func.html":[1,3,1], +"functions_vars.html":[1,3,2], +"hierarchy.html":[1,2], +"index.html":[], +"index.html":[0], +"index.html#autotoc_md1":[0,0], +"index.html#autotoc_md2":[0,1], +"index.html#autotoc_md3":[0,1,0], +"index.html#autotoc_md4":[0,1,1], +"index.html#autotoc_md5":[0,2], +"pages.html":[], +"publishers_8h_source.html":[2,0,0,0,2], +"structmrs__uav__hw__api_1_1CommonHandlers__t.html":[1,0,0,0], +"structmrs__uav__hw__api_1_1CommonHandlers__t.html#a0d76cabe5191a3e8d618e175b0d89da9":[1,0,0,0,3], +"structmrs__uav__hw__api_1_1CommonHandlers__t.html#a460f462de5f5b703562cc7d4c4bf62e1":[1,0,0,0,2], +"structmrs__uav__hw__api_1_1CommonHandlers__t.html#ab78052233d3b0847dc2ca11797964184":[1,0,0,0,4], +"structmrs__uav__hw__api_1_1CommonHandlers__t.html#abd112a8b4d35872df1bf2d110875cf82":[1,0,0,0,0], +"structmrs__uav__hw__api_1_1CommonHandlers__t.html#add8f6daa450737766d3006bab075cc18":[1,0,0,0,1], +"structmrs__uav__hw__api_1_1Publishers__t.html":[1,0,0,4], +"structmrs__uav__hw__api_1_1Publishers__t.html#a1e38ab12de7f79acfb5845f4d47f1f13":[1,0,0,4,0], +"structmrs__uav__hw__api_1_1Publishers__t.html#a243c02a6762c04c4fd7ebce7a0dcd96d":[1,0,0,4,6], +"structmrs__uav__hw__api_1_1Publishers__t.html#a2d4e6d0d2851ce5e9e3c0ab6b6aa05d4":[1,0,0,4,3], +"structmrs__uav__hw__api_1_1Publishers__t.html#a302b36b1d9b871767d40467cb3ce7534":[1,0,0,4,12], +"structmrs__uav__hw__api_1_1Publishers__t.html#a31bc9f73d8cda684df1db27181d8dcbf":[1,0,0,4,1], +"structmrs__uav__hw__api_1_1Publishers__t.html#a4d586872bc4e08270b1e371ee9d389ef":[1,0,0,4,15], +"structmrs__uav__hw__api_1_1Publishers__t.html#a590b528334c2aa98308f448c933ec17a":[1,0,0,4,7], +"structmrs__uav__hw__api_1_1Publishers__t.html#a60b1b9d9feab8aa0dcbbe09741d19ccc":[1,0,0,4,16], +"structmrs__uav__hw__api_1_1Publishers__t.html#a628c7d8851d011d7e050b73e6ddc10ee":[1,0,0,4,9], +"structmrs__uav__hw__api_1_1Publishers__t.html#a786d40a41a30e1bc2f19bb83d02ddfd0":[1,0,0,4,4], +"structmrs__uav__hw__api_1_1Publishers__t.html#a85011e8a0ca4b1a6964839b14fa311b4":[1,0,0,4,13], +"structmrs__uav__hw__api_1_1Publishers__t.html#a8a712f6d26d186be0f037304f27e8e85":[1,0,0,4,5], +"structmrs__uav__hw__api_1_1Publishers__t.html#a9d4fa0cfb267780d6f41d568ddfcd96e":[1,0,0,4,14], +"structmrs__uav__hw__api_1_1Publishers__t.html#abbbd33e2c97b9fdee4a13e6ac8f3851d":[1,0,0,4,2], +"structmrs__uav__hw__api_1_1Publishers__t.html#ad324064c4040dbcffbb7d8abc50530eb":[1,0,0,4,10], +"structmrs__uav__hw__api_1_1Publishers__t.html#aeec348862e2945e51b222e9a1cf169f6":[1,0,0,4,8], +"structmrs__uav__hw__api_1_1Publishers__t.html#af10b59dba9dd243d5568d694687f5ccb":[1,0,0,4,11] +}; diff --git a/open.png b/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/open.png differ diff --git a/publishers_8h_source.html b/publishers_8h_source.html new file mode 100644 index 0000000..7d382d9 --- /dev/null +++ b/publishers_8h_source.html @@ -0,0 +1,207 @@ + + + + + + + +mrs_uav_hw_api: include/mrs_uav_hw_api/publishers.h Source File + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    mrs_uav_hw_api +
    +
    An abstraction layer between the MRS UAV System and a low-level Flight Controller
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    publishers.h
    +
    +
    +
    1 #ifndef PUBLISHERS_H
    +
    2 #define PUBLISHERS_H
    +
    3 
    +
    4 #include <sensor_msgs/Imu.h>
    +
    5 #include <sensor_msgs/NavSatFix.h>
    +
    6 #include <sensor_msgs/NavSatStatus.h>
    +
    7 #include <sensor_msgs/Range.h>
    +
    8 #include <sensor_msgs/BatteryState.h>
    +
    9 #include <sensor_msgs/MagneticField.h>
    +
    10 
    +
    11 #include <mrs_msgs/Float64Stamped.h>
    +
    12 
    +
    13 #include <mrs_msgs/HwApiStatus.h>
    +
    14 #include <mrs_msgs/HwApiRcChannels.h>
    +
    15 #include <mrs_msgs/RtkGps.h>
    +
    16 #include <mrs_msgs/RtkFixType.h>
    +
    17 
    +
    18 #include <mrs_msgs/HwApiAltitude.h>
    +
    19 
    +
    20 #include <nav_msgs/Odometry.h>
    +
    21 
    +
    22 #include <geometry_msgs/QuaternionStamped.h>
    +
    23 #include <geometry_msgs/Vector3Stamped.h>
    +
    24 #include <geometry_msgs/PointStamped.h>
    +
    25 
    +
    26 namespace mrs_uav_hw_api
    +
    27 {
    +
    28 
    +
    29 //}
    +
    30 
    +
    31 typedef std::function<void(const sensor_msgs::NavSatFix &msg)> publishGNSS_t;
    +
    32 typedef std::function<void(const sensor_msgs::NavSatStatus &msg)> publishGNSSStatus_t;
    +
    33 typedef std::function<void(const mrs_msgs::RtkGps &msg)> publishRTK_t;
    +
    34 typedef std::function<void(const mrs_msgs::HwApiAltitude &msg)> publishAltitude_t;
    +
    35 typedef std::function<void(const mrs_msgs::Float64Stamped &msg)> publishMagnetometerHeading_t;
    +
    36 typedef std::function<void(const sensor_msgs::MagneticField &msg)> publishMagneticField_t;
    +
    37 typedef std::function<void(const mrs_msgs::HwApiStatus &msg)> publishStatus_t;
    +
    38 typedef std::function<void(const mrs_msgs::HwApiRcChannels &msg)> publishRcChannels_t;
    +
    39 typedef std::function<void(const sensor_msgs::BatteryState &msg)> publishBatteryState_t;
    +
    40 typedef std::function<void(const sensor_msgs::Imu &msg)> publishIMU_t;
    +
    41 typedef std::function<void(const sensor_msgs::Range &msg)> publishDistanceSensor_t;
    +
    42 typedef std::function<void(const geometry_msgs::Vector3Stamped &msg)> publishVelocity_t;
    +
    43 typedef std::function<void(const geometry_msgs::PointStamped &msg)> publishPosition_t;
    +
    44 typedef std::function<void(const geometry_msgs::QuaternionStamped &msg)> publishOrientation_t;
    +
    45 typedef std::function<void(const geometry_msgs::Vector3Stamped &msg)> publishAngularVelocity_t;
    +
    46 typedef std::function<void(const nav_msgs::Odometry &msg)> publishOdometry_t;
    +
    47 
    + +
    55 {
    +
    59  publishIMU_t publishIMU;
    +
    60 
    +
    64  publishGNSS_t publishGNSS;
    +
    65 
    +
    69  publishGNSSStatus_t publishGNSSStatus;
    +
    70 
    +
    74  publishRTK_t publishRTK;
    +
    75 
    +
    79  publishDistanceSensor_t publishDistanceSensor;
    +
    80 
    +
    84  publishAltitude_t publishAltitude;
    +
    85 
    +
    89  publishMagnetometerHeading_t publishMagnetometerHeading;
    +
    90 
    +
    94  publishMagneticField_t publishMagneticField;
    +
    95 
    +
    99  publishStatus_t publishStatus;
    +
    100 
    +
    104  publishRcChannels_t publishRcChannels;
    +
    105 
    +
    109  publishBatteryState_t publishBatteryState;
    +
    110 
    +
    115  publishPosition_t publishPosition;
    +
    116 
    +
    120  publishOrientation_t publishOrientation;
    +
    121 
    +
    125  publishVelocity_t publishVelocity;
    +
    126 
    +
    131  publishAngularVelocity_t publishAngularVelocity;
    +
    132 
    +
    137  publishOdometry_t publishOdometry;
    +
    138 
    +
    143  publishOdometry_t publishGroundTruth;
    +
    144 };
    +
    145 
    +
    146 } // namespace mrs_uav_hw_api
    +
    147 
    +
    148 #endif // PUBLISHERS_H
    +
    +
    +
    publishAngularVelocity_t publishAngularVelocity
    Publisher for the intrinsic angular velocity. This can be already pre-filtered. The angular velocity ...
    Definition: publishers.h:131
    +
    publishMagneticField_t publishMagneticField
    Publisher for the RAW magnetometer readings.
    Definition: publishers.h:94
    +
    publishMagnetometerHeading_t publishMagnetometerHeading
    Publisher for the estimated magnetometer heading.
    Definition: publishers.h:89
    +
    publishAltitude_t publishAltitude
    Altitude of the UAV in AMSL (Above Mean Seal Level).
    Definition: publishers.h:84
    +
    A structure with publisher methods provided to the HW API Plugin. The plugin can call these methods a...
    Definition: publishers.h:54
    +
    publishDistanceSensor_t publishDistanceSensor
    Publisher for the distance sensor readings. The distance sensor is expected to be pointing down towar...
    Definition: publishers.h:79
    +
    publishOdometry_t publishGroundTruth
    Publisher for ground truth odometry which can be provided by, e.g., a simulator or a MoCap system....
    Definition: publishers.h:143
    +
    publishPosition_t publishPosition
    Publisher for the UAV position as estimated by the flight controller. The position is supposed to be ...
    Definition: publishers.h:115
    +
    publishIMU_t publishIMU
    Publisher for the raw IMU data.
    Definition: publishers.h:59
    +
    publishRcChannels_t publishRcChannels
    Publisher for the RC Channels received by the flight controller.
    Definition: publishers.h:104
    +
    publishGNSS_t publishGNSS
    Publisher for the main GNSS data.
    Definition: publishers.h:64
    +
    publishRTK_t publishRTK
    Publisher for the RTK GNSS data.
    Definition: publishers.h:74
    +
    publishGNSSStatus_t publishGNSSStatus
    Publisher for the GNSS status message.
    Definition: publishers.h:69
    +
    publishOdometry_t publishOdometry
    Publisher for a general "odometry" message that can be used for vizualizing the state of the UAV,...
    Definition: publishers.h:137
    +
    publishStatus_t publishStatus
    Publisher for the HW API Plugin status.
    Definition: publishers.h:99
    +
    publishVelocity_t publishVelocity
    Publisher for the UAV velocity expressed in the body-fixed frame, provided by the common handlers.
    Definition: publishers.h:125
    +
    publishBatteryState_t publishBatteryState
    Publisher for the UAV battery state.
    Definition: publishers.h:109
    +
    publishOrientation_t publishOrientation
    Publisher for the UAV orientation. The orientation is supposed to be expressed in the "world frame" p...
    Definition: publishers.h:120
    + + + + diff --git a/resize.js b/resize.js new file mode 100644 index 0000000..a0bb5f4 --- /dev/null +++ b/resize.js @@ -0,0 +1,137 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 0000000..26dd244 --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..3ad8a1e --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['callbackaccelerationhdgcmd_0',['callbackAccelerationHdgCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#af88b2aa16a8e88662cf6c16747acdf82',1,'mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#ac904bff4c9b37aa2b5ee8aa30d922f79',1,'mrs_uav_hw_api::DummyApi::callbackAccelerationHdgCmd()']]], + ['callbackaccelerationhdgratecmd_1',['callbackAccelerationHdgRateCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a5903740fdd654da8e0b1f0fcd34d852b',1,'mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgRateCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#af8681be68b7f7e7cdbf12c8ce22fbe31',1,'mrs_uav_hw_api::DummyApi::callbackAccelerationHdgRateCmd()']]], + ['callbackactuatorcmd_2',['callbackActuatorCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a397145b920c1600b974fa3a5d107411a',1,'mrs_uav_hw_api::MrsUavHwApi::callbackActuatorCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#ac87d448f75cbd8a1b8d4da0467d163e9',1,'mrs_uav_hw_api::DummyApi::callbackActuatorCmd()']]], + ['callbackarming_3',['callbackArming',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#ad549fd61bfa9996b1aaa49946d814156',1,'mrs_uav_hw_api::MrsUavHwApi::callbackArming()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a565c955f9541ccb72a904f67bd02f83c',1,'mrs_uav_hw_api::DummyApi::callbackArming()']]], + ['callbackattitudecmd_4',['callbackAttitudeCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a537f4a53b84aee069bc3a8dd6a6620f7',1,'mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#afd1ca6edaef8e060de452de555422191',1,'mrs_uav_hw_api::DummyApi::callbackAttitudeCmd()']]], + ['callbackattituderatecmd_5',['callbackAttitudeRateCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#afb549fb51dbf0c05b082b1de9cd6c30b',1,'mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeRateCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a4c628110de00a3df84e44cad7190e364',1,'mrs_uav_hw_api::DummyApi::callbackAttitudeRateCmd()']]], + ['callbackcontrolgroupcmd_6',['callbackControlGroupCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#ada32d79a7512a6cba1b38d48a7926f18',1,'mrs_uav_hw_api::MrsUavHwApi::callbackControlGroupCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a218c3ffb446ca0b45f241e2790a4b684',1,'mrs_uav_hw_api::DummyApi::callbackControlGroupCmd()']]], + ['callbackoffboard_7',['callbackOffboard',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#aa4e0e43507391daf90f115d941b5aaee',1,'mrs_uav_hw_api::MrsUavHwApi::callbackOffboard()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a1c8081a81f3f1a684cafecd627e75e22',1,'mrs_uav_hw_api::DummyApi::callbackOffboard()']]], + ['callbackpositioncmd_8',['callbackPositionCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#abfaa7f3e38b567f9005152e8bacb23fb',1,'mrs_uav_hw_api::MrsUavHwApi::callbackPositionCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#ad6ef3a2c6514595361959664cf6af850',1,'mrs_uav_hw_api::DummyApi::callbackPositionCmd()']]], + ['callbacktrackercmd_9',['callbackTrackerCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a610c4698eb909da8a5ab05b730347318',1,'mrs_uav_hw_api::MrsUavHwApi::callbackTrackerCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#aa022a02c75d33e4e93f112537a1fdf86',1,'mrs_uav_hw_api::DummyApi::callbackTrackerCmd()']]], + ['callbackvelocityhdgcmd_10',['callbackVelocityHdgCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a624d2ec97c6c02118e214216614572b7',1,'mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a9dbd76d8646e8414c4c4b6405e988f00',1,'mrs_uav_hw_api::DummyApi::callbackVelocityHdgCmd()']]], + ['callbackvelocityhdgratecmd_11',['callbackVelocityHdgRateCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a47d1818995e6bc815f4e8cad789c4232',1,'mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgRateCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a3cbaa93b72033097ece1f833d022968f',1,'mrs_uav_hw_api::DummyApi::callbackVelocityHdgRateCmd()']]], + ['commonhandlers_5ft_12',['CommonHandlers_t',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html',1,'mrs_uav_hw_api']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 0000000..8eb215b --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..13490a5 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dummyapi_13',['DummyApi',['../classmrs__uav__hw__api_1_1DummyApi.html',1,'mrs_uav_hw_api']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 0000000..b26d916 --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..e045e90 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['getbodyframename_14',['getBodyFrameName',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#abd112a8b4d35872df1bf2d110875cf82',1,'mrs_uav_hw_api::CommonHandlers_t']]], + ['getcapabilities_15',['getCapabilities',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a654f724908c2a601f69b66f44f94092f',1,'mrs_uav_hw_api::MrsUavHwApi::getCapabilities()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a3328034dca690d917ce2689c1eb13b52',1,'mrs_uav_hw_api::DummyApi::getCapabilities()']]], + ['getstatus_16',['getStatus',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a7d8267f792fffb3a6118df0db21d1202',1,'mrs_uav_hw_api::MrsUavHwApi::getStatus()'],['../classmrs__uav__hw__api_1_1DummyApi.html#af7bbab47dba560abd5a76a273c07e157',1,'mrs_uav_hw_api::DummyApi::getStatus()']]], + ['getuavname_17',['getUavName',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#add8f6daa450737766d3006bab075cc18',1,'mrs_uav_hw_api::CommonHandlers_t']]], + ['getworldframename_18',['getWorldFrameName',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#a460f462de5f5b703562cc7d4c4bf62e1',1,'mrs_uav_hw_api::CommonHandlers_t']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 0000000..b61b96f --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..4da4398 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hwapimanager_19',['HwApiManager',['../classmrs__uav__hw__api_1_1HwApiManager.html',1,'mrs_uav_hw_api']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 0000000..06de155 --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..70ee59e --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['initialize_20',['initialize',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a8889e80844000735944372644daf4a19',1,'mrs_uav_hw_api::MrsUavHwApi::initialize()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a12c9b64ebdd7787cb78f23f75892d76d',1,'mrs_uav_hw_api::DummyApi::initialize()']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 0000000..2544c4e --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..0ea2da1 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['mrs_20uav_20hw_20api_20_28_3ca_20href_3d_22https_3a_2f_2fctu_2dmrs_2egithub_2eio_2fmrs_5fuav_5fhw_5fapi_2f_22_3edocs_3c_2fa_3e_29_21',['MRS UAV HW API (<a href="https://ctu-mrs.github.io/mrs_uav_hw_api/">Docs</a>)',['../index.html',1,'']]], + ['mrsuavhwapi_22',['MrsUavHwApi',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html',1,'mrs_uav_hw_api']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 0000000..43f14ea --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..7fa0e6b --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['publishaltitude_23',['publishAltitude',['../structmrs__uav__hw__api_1_1Publishers__t.html#a1e38ab12de7f79acfb5845f4d47f1f13',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishangularvelocity_24',['publishAngularVelocity',['../structmrs__uav__hw__api_1_1Publishers__t.html#a31bc9f73d8cda684df1db27181d8dcbf',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishbatterystate_25',['publishBatteryState',['../structmrs__uav__hw__api_1_1Publishers__t.html#abbbd33e2c97b9fdee4a13e6ac8f3851d',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishdistancesensor_26',['publishDistanceSensor',['../structmrs__uav__hw__api_1_1Publishers__t.html#a2d4e6d0d2851ce5e9e3c0ab6b6aa05d4',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishers_27',['publishers',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#a0d76cabe5191a3e8d618e175b0d89da9',1,'mrs_uav_hw_api::CommonHandlers_t']]], + ['publishers_5ft_28',['Publishers_t',['../structmrs__uav__hw__api_1_1Publishers__t.html',1,'mrs_uav_hw_api']]], + ['publishgnss_29',['publishGNSS',['../structmrs__uav__hw__api_1_1Publishers__t.html#a786d40a41a30e1bc2f19bb83d02ddfd0',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishgnssstatus_30',['publishGNSSStatus',['../structmrs__uav__hw__api_1_1Publishers__t.html#a8a712f6d26d186be0f037304f27e8e85',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishgroundtruth_31',['publishGroundTruth',['../structmrs__uav__hw__api_1_1Publishers__t.html#a243c02a6762c04c4fd7ebce7a0dcd96d',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishimu_32',['publishIMU',['../structmrs__uav__hw__api_1_1Publishers__t.html#a590b528334c2aa98308f448c933ec17a',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishmagneticfield_33',['publishMagneticField',['../structmrs__uav__hw__api_1_1Publishers__t.html#aeec348862e2945e51b222e9a1cf169f6',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishmagnetometerheading_34',['publishMagnetometerHeading',['../structmrs__uav__hw__api_1_1Publishers__t.html#a628c7d8851d011d7e050b73e6ddc10ee',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishodometry_35',['publishOdometry',['../structmrs__uav__hw__api_1_1Publishers__t.html#ad324064c4040dbcffbb7d8abc50530eb',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishorientation_36',['publishOrientation',['../structmrs__uav__hw__api_1_1Publishers__t.html#af10b59dba9dd243d5568d694687f5ccb',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishposition_37',['publishPosition',['../structmrs__uav__hw__api_1_1Publishers__t.html#a302b36b1d9b871767d40467cb3ce7534',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishrcchannels_38',['publishRcChannels',['../structmrs__uav__hw__api_1_1Publishers__t.html#a85011e8a0ca4b1a6964839b14fa311b4',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishrtk_39',['publishRTK',['../structmrs__uav__hw__api_1_1Publishers__t.html#a9d4fa0cfb267780d6f41d568ddfcd96e',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishstatus_40',['publishStatus',['../structmrs__uav__hw__api_1_1Publishers__t.html#a4d586872bc4e08270b1e371ee9d389ef',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishvelocity_41',['publishVelocity',['../structmrs__uav__hw__api_1_1Publishers__t.html#a60b1b9d9feab8aa0dcbbe09741d19ccc',1,'mrs_uav_hw_api::Publishers_t']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 0000000..af52f82 --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..6536f84 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['transformer_42',['transformer',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#ab78052233d3b0847dc2ca11797964184',1,'mrs_uav_hw_api::CommonHandlers_t']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 0000000..cf2b5df --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..d8b2f7e --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_7emrsuavhwapi_43',['~MrsUavHwApi',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#ac56c138bfac82f134d2c67558d49e51d',1,'mrs_uav_hw_api::MrsUavHwApi']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 0000000..f7e4c14 --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..c858330 --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['commonhandlers_5ft_44',['CommonHandlers_t',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html',1,'mrs_uav_hw_api']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 0000000..c7ff4b3 --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..c7b9de4 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dummyapi_45',['DummyApi',['../classmrs__uav__hw__api_1_1DummyApi.html',1,'mrs_uav_hw_api']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 0000000..0d1e8a0 --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..c9f4744 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hwapimanager_46',['HwApiManager',['../classmrs__uav__hw__api_1_1HwApiManager.html',1,'mrs_uav_hw_api']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 0000000..2102545 --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..167fae9 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mrsuavhwapi_47',['MrsUavHwApi',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html',1,'mrs_uav_hw_api']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 0000000..095ab59 --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 0000000..a200bed --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['publishers_5ft_48',['Publishers_t',['../structmrs__uav__hw__api_1_1Publishers__t.html',1,'mrs_uav_hw_api']]] +]; diff --git a/search/close.png b/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/search/close.png differ diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 0000000..e17c711 --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..b81ae08 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['callbackaccelerationhdgcmd_49',['callbackAccelerationHdgCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#af88b2aa16a8e88662cf6c16747acdf82',1,'mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#ac904bff4c9b37aa2b5ee8aa30d922f79',1,'mrs_uav_hw_api::DummyApi::callbackAccelerationHdgCmd()']]], + ['callbackaccelerationhdgratecmd_50',['callbackAccelerationHdgRateCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a5903740fdd654da8e0b1f0fcd34d852b',1,'mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgRateCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#af8681be68b7f7e7cdbf12c8ce22fbe31',1,'mrs_uav_hw_api::DummyApi::callbackAccelerationHdgRateCmd()']]], + ['callbackactuatorcmd_51',['callbackActuatorCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a397145b920c1600b974fa3a5d107411a',1,'mrs_uav_hw_api::MrsUavHwApi::callbackActuatorCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#ac87d448f75cbd8a1b8d4da0467d163e9',1,'mrs_uav_hw_api::DummyApi::callbackActuatorCmd()']]], + ['callbackarming_52',['callbackArming',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#ad549fd61bfa9996b1aaa49946d814156',1,'mrs_uav_hw_api::MrsUavHwApi::callbackArming()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a565c955f9541ccb72a904f67bd02f83c',1,'mrs_uav_hw_api::DummyApi::callbackArming()']]], + ['callbackattitudecmd_53',['callbackAttitudeCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a537f4a53b84aee069bc3a8dd6a6620f7',1,'mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#afd1ca6edaef8e060de452de555422191',1,'mrs_uav_hw_api::DummyApi::callbackAttitudeCmd()']]], + ['callbackattituderatecmd_54',['callbackAttitudeRateCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#afb549fb51dbf0c05b082b1de9cd6c30b',1,'mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeRateCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a4c628110de00a3df84e44cad7190e364',1,'mrs_uav_hw_api::DummyApi::callbackAttitudeRateCmd()']]], + ['callbackcontrolgroupcmd_55',['callbackControlGroupCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#ada32d79a7512a6cba1b38d48a7926f18',1,'mrs_uav_hw_api::MrsUavHwApi::callbackControlGroupCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a218c3ffb446ca0b45f241e2790a4b684',1,'mrs_uav_hw_api::DummyApi::callbackControlGroupCmd()']]], + ['callbackoffboard_56',['callbackOffboard',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#aa4e0e43507391daf90f115d941b5aaee',1,'mrs_uav_hw_api::MrsUavHwApi::callbackOffboard()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a1c8081a81f3f1a684cafecd627e75e22',1,'mrs_uav_hw_api::DummyApi::callbackOffboard()']]], + ['callbackpositioncmd_57',['callbackPositionCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#abfaa7f3e38b567f9005152e8bacb23fb',1,'mrs_uav_hw_api::MrsUavHwApi::callbackPositionCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#ad6ef3a2c6514595361959664cf6af850',1,'mrs_uav_hw_api::DummyApi::callbackPositionCmd()']]], + ['callbacktrackercmd_58',['callbackTrackerCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a610c4698eb909da8a5ab05b730347318',1,'mrs_uav_hw_api::MrsUavHwApi::callbackTrackerCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#aa022a02c75d33e4e93f112537a1fdf86',1,'mrs_uav_hw_api::DummyApi::callbackTrackerCmd()']]], + ['callbackvelocityhdgcmd_59',['callbackVelocityHdgCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a624d2ec97c6c02118e214216614572b7',1,'mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a9dbd76d8646e8414c4c4b6405e988f00',1,'mrs_uav_hw_api::DummyApi::callbackVelocityHdgCmd()']]], + ['callbackvelocityhdgratecmd_60',['callbackVelocityHdgRateCmd',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a47d1818995e6bc815f4e8cad789c4232',1,'mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgRateCmd()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a3cbaa93b72033097ece1f833d022968f',1,'mrs_uav_hw_api::DummyApi::callbackVelocityHdgRateCmd()']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 0000000..0ddac0a --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..2101410 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['getcapabilities_61',['getCapabilities',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a654f724908c2a601f69b66f44f94092f',1,'mrs_uav_hw_api::MrsUavHwApi::getCapabilities()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a3328034dca690d917ce2689c1eb13b52',1,'mrs_uav_hw_api::DummyApi::getCapabilities()']]], + ['getstatus_62',['getStatus',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a7d8267f792fffb3a6118df0db21d1202',1,'mrs_uav_hw_api::MrsUavHwApi::getStatus()'],['../classmrs__uav__hw__api_1_1DummyApi.html#af7bbab47dba560abd5a76a273c07e157',1,'mrs_uav_hw_api::DummyApi::getStatus()']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 0000000..2737c5a --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..0941dac --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['initialize_63',['initialize',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#a8889e80844000735944372644daf4a19',1,'mrs_uav_hw_api::MrsUavHwApi::initialize()'],['../classmrs__uav__hw__api_1_1DummyApi.html#a12c9b64ebdd7787cb78f23f75892d76d',1,'mrs_uav_hw_api::DummyApi::initialize()']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 0000000..6da86e7 --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..29b0c40 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_7emrsuavhwapi_64',['~MrsUavHwApi',['../classmrs__uav__hw__api_1_1MrsUavHwApi.html#ac56c138bfac82f134d2c67558d49e51d',1,'mrs_uav_hw_api::MrsUavHwApi']]] +]; diff --git a/search/mag_sel.png b/search/mag_sel.png new file mode 100644 index 0000000..39c0ed5 Binary files /dev/null and b/search/mag_sel.png differ diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 0000000..4377320 --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/search/pages_0.html b/search/pages_0.html new file mode 100644 index 0000000..9a6a29a --- /dev/null +++ b/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 0000000..5156960 --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mrs_20uav_20hw_20api_20_28_3ca_20href_3d_22https_3a_2f_2fctu_2dmrs_2egithub_2eio_2fmrs_5fuav_5fhw_5fapi_2f_22_3edocs_3c_2fa_3e_29_87',['MRS UAV HW API (<a href="https://ctu-mrs.github.io/mrs_uav_hw_api/">Docs</a>)',['../index.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_0.js b/search/variables_0.js new file mode 100644 index 0000000..f79af61 --- /dev/null +++ b/search/variables_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['getbodyframename_65',['getBodyFrameName',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#abd112a8b4d35872df1bf2d110875cf82',1,'mrs_uav_hw_api::CommonHandlers_t']]], + ['getuavname_66',['getUavName',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#add8f6daa450737766d3006bab075cc18',1,'mrs_uav_hw_api::CommonHandlers_t']]], + ['getworldframename_67',['getWorldFrameName',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#a460f462de5f5b703562cc7d4c4bf62e1',1,'mrs_uav_hw_api::CommonHandlers_t']]] +]; diff --git a/search/variables_1.html b/search/variables_1.html new file mode 100644 index 0000000..49fe59a --- /dev/null +++ b/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_1.js b/search/variables_1.js new file mode 100644 index 0000000..52eb0de --- /dev/null +++ b/search/variables_1.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['publishaltitude_68',['publishAltitude',['../structmrs__uav__hw__api_1_1Publishers__t.html#a1e38ab12de7f79acfb5845f4d47f1f13',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishangularvelocity_69',['publishAngularVelocity',['../structmrs__uav__hw__api_1_1Publishers__t.html#a31bc9f73d8cda684df1db27181d8dcbf',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishbatterystate_70',['publishBatteryState',['../structmrs__uav__hw__api_1_1Publishers__t.html#abbbd33e2c97b9fdee4a13e6ac8f3851d',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishdistancesensor_71',['publishDistanceSensor',['../structmrs__uav__hw__api_1_1Publishers__t.html#a2d4e6d0d2851ce5e9e3c0ab6b6aa05d4',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishers_72',['publishers',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#a0d76cabe5191a3e8d618e175b0d89da9',1,'mrs_uav_hw_api::CommonHandlers_t']]], + ['publishgnss_73',['publishGNSS',['../structmrs__uav__hw__api_1_1Publishers__t.html#a786d40a41a30e1bc2f19bb83d02ddfd0',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishgnssstatus_74',['publishGNSSStatus',['../structmrs__uav__hw__api_1_1Publishers__t.html#a8a712f6d26d186be0f037304f27e8e85',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishgroundtruth_75',['publishGroundTruth',['../structmrs__uav__hw__api_1_1Publishers__t.html#a243c02a6762c04c4fd7ebce7a0dcd96d',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishimu_76',['publishIMU',['../structmrs__uav__hw__api_1_1Publishers__t.html#a590b528334c2aa98308f448c933ec17a',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishmagneticfield_77',['publishMagneticField',['../structmrs__uav__hw__api_1_1Publishers__t.html#aeec348862e2945e51b222e9a1cf169f6',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishmagnetometerheading_78',['publishMagnetometerHeading',['../structmrs__uav__hw__api_1_1Publishers__t.html#a628c7d8851d011d7e050b73e6ddc10ee',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishodometry_79',['publishOdometry',['../structmrs__uav__hw__api_1_1Publishers__t.html#ad324064c4040dbcffbb7d8abc50530eb',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishorientation_80',['publishOrientation',['../structmrs__uav__hw__api_1_1Publishers__t.html#af10b59dba9dd243d5568d694687f5ccb',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishposition_81',['publishPosition',['../structmrs__uav__hw__api_1_1Publishers__t.html#a302b36b1d9b871767d40467cb3ce7534',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishrcchannels_82',['publishRcChannels',['../structmrs__uav__hw__api_1_1Publishers__t.html#a85011e8a0ca4b1a6964839b14fa311b4',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishrtk_83',['publishRTK',['../structmrs__uav__hw__api_1_1Publishers__t.html#a9d4fa0cfb267780d6f41d568ddfcd96e',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishstatus_84',['publishStatus',['../structmrs__uav__hw__api_1_1Publishers__t.html#a4d586872bc4e08270b1e371ee9d389ef',1,'mrs_uav_hw_api::Publishers_t']]], + ['publishvelocity_85',['publishVelocity',['../structmrs__uav__hw__api_1_1Publishers__t.html#a60b1b9d9feab8aa0dcbbe09741d19ccc',1,'mrs_uav_hw_api::Publishers_t']]] +]; diff --git a/search/variables_2.html b/search/variables_2.html new file mode 100644 index 0000000..0c8a18c --- /dev/null +++ b/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_2.js b/search/variables_2.js new file mode 100644 index 0000000..4475fe7 --- /dev/null +++ b/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['transformer_86',['transformer',['../structmrs__uav__hw__api_1_1CommonHandlers__t.html#ab78052233d3b0847dc2ca11797964184',1,'mrs_uav_hw_api::CommonHandlers_t']]] +]; diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/splitbar.png differ diff --git a/structmrs__uav__hw__api_1_1CommonHandlers__t-members.html b/structmrs__uav__hw__api_1_1CommonHandlers__t-members.html new file mode 100644 index 0000000..a32bfff --- /dev/null +++ b/structmrs__uav__hw__api_1_1CommonHandlers__t-members.html @@ -0,0 +1,109 @@ + + + + + + + +mrs_uav_hw_api: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    mrs_uav_hw_api +
    +
    An abstraction layer between the MRS UAV System and a low-level Flight Controller
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structmrs__uav__hw__api_1_1CommonHandlers__t.html b/structmrs__uav__hw__api_1_1CommonHandlers__t.html new file mode 100644 index 0000000..041764a --- /dev/null +++ b/structmrs__uav__hw__api_1_1CommonHandlers__t.html @@ -0,0 +1,150 @@ + + + + + + + +mrs_uav_hw_api: mrs_uav_hw_api::CommonHandlers_t Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    mrs_uav_hw_api +
    +
    An abstraction layer between the MRS UAV System and a low-level Flight Controller
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    mrs_uav_hw_api::CommonHandlers_t Struct Reference
    +
    +
    + +

    A structure with methods and variables provided to the HW API Plugin. + More...

    + +

    #include <common_handlers.h>

    +
    + + Collaboration diagram for mrs_uav_hw_api::CommonHandlers_t:
    +
    +
    + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +Publishers_t publishers
     A structure with publishers that the plugin should use to provide data to the MRS UAV System.
     
    +std::shared_ptr< mrs_lib::Transformer > transformer
     The mrs_lib's TF2 transformer wrapper.
     
    +getUavName_t getUavName
     Method for obtaining the current "UAV_NAME" (the one set from the $UAV_NAME env variable).
     
    +getBodyFrameName_t getBodyFrameName
     Method for obtaining the body-fixed frame_id (as it is called by the MRS UAV System). This frame_id should be used when publishing data in the body-fixed frame, e.g., the IMU data.
     
    +getWorldFrameName_t getWorldFrameName
     Method for obtaining the world-frame for marking the flight-controller's data, e.g., the position of the UAV in the flight-controllers frame.
     
    +

    Detailed Description

    +

    A structure with methods and variables provided to the HW API Plugin.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structmrs__uav__hw__api_1_1CommonHandlers__t.js b/structmrs__uav__hw__api_1_1CommonHandlers__t.js new file mode 100644 index 0000000..33699cf --- /dev/null +++ b/structmrs__uav__hw__api_1_1CommonHandlers__t.js @@ -0,0 +1,8 @@ +var structmrs__uav__hw__api_1_1CommonHandlers__t = +[ + [ "getBodyFrameName", "structmrs__uav__hw__api_1_1CommonHandlers__t.html#abd112a8b4d35872df1bf2d110875cf82", null ], + [ "getUavName", "structmrs__uav__hw__api_1_1CommonHandlers__t.html#add8f6daa450737766d3006bab075cc18", null ], + [ "getWorldFrameName", "structmrs__uav__hw__api_1_1CommonHandlers__t.html#a460f462de5f5b703562cc7d4c4bf62e1", null ], + [ "publishers", "structmrs__uav__hw__api_1_1CommonHandlers__t.html#a0d76cabe5191a3e8d618e175b0d89da9", null ], + [ "transformer", "structmrs__uav__hw__api_1_1CommonHandlers__t.html#ab78052233d3b0847dc2ca11797964184", null ] +]; \ No newline at end of file diff --git a/structmrs__uav__hw__api_1_1CommonHandlers__t__coll__graph.map b/structmrs__uav__hw__api_1_1CommonHandlers__t__coll__graph.map new file mode 100644 index 0000000..b69a9e0 --- /dev/null +++ b/structmrs__uav__hw__api_1_1CommonHandlers__t__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/structmrs__uav__hw__api_1_1CommonHandlers__t__coll__graph.md5 b/structmrs__uav__hw__api_1_1CommonHandlers__t__coll__graph.md5 new file mode 100644 index 0000000..ced4186 --- /dev/null +++ b/structmrs__uav__hw__api_1_1CommonHandlers__t__coll__graph.md5 @@ -0,0 +1 @@ +a293bd62e07b4961f4d73a99152f9ee4 \ No newline at end of file diff --git a/structmrs__uav__hw__api_1_1CommonHandlers__t__coll__graph.png b/structmrs__uav__hw__api_1_1CommonHandlers__t__coll__graph.png new file mode 100644 index 0000000..55b9a28 Binary files /dev/null and b/structmrs__uav__hw__api_1_1CommonHandlers__t__coll__graph.png differ diff --git a/structmrs__uav__hw__api_1_1Publishers__t-members.html b/structmrs__uav__hw__api_1_1Publishers__t-members.html new file mode 100644 index 0000000..7f0639f --- /dev/null +++ b/structmrs__uav__hw__api_1_1Publishers__t-members.html @@ -0,0 +1,121 @@ + + + + + + + +mrs_uav_hw_api: Member List + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    mrs_uav_hw_api +
    +
    An abstraction layer between the MRS UAV System and a low-level Flight Controller
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/structmrs__uav__hw__api_1_1Publishers__t.html b/structmrs__uav__hw__api_1_1Publishers__t.html new file mode 100644 index 0000000..6f77877 --- /dev/null +++ b/structmrs__uav__hw__api_1_1Publishers__t.html @@ -0,0 +1,187 @@ + + + + + + + +mrs_uav_hw_api: mrs_uav_hw_api::Publishers_t Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    mrs_uav_hw_api +
    +
    An abstraction layer between the MRS UAV System and a low-level Flight Controller
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    mrs_uav_hw_api::Publishers_t Struct Reference
    +
    +
    + +

    A structure with publisher methods provided to the HW API Plugin. The plugin can call these methods at will to provided data to the MRS UAV System. In case the HW API Plugin intents to publish data, the respective varible "produces_***" in the HW API Capabilities of the plugin is supposed to be fill in. + More...

    + +

    #include <publishers.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +publishIMU_t publishIMU
     Publisher for the raw IMU data.
     
    +publishGNSS_t publishGNSS
     Publisher for the main GNSS data.
     
    +publishGNSSStatus_t publishGNSSStatus
     Publisher for the GNSS status message.
     
    +publishRTK_t publishRTK
     Publisher for the RTK GNSS data.
     
    +publishDistanceSensor_t publishDistanceSensor
     Publisher for the distance sensor readings. The distance sensor is expected to be pointing down towards the ground.
     
    +publishAltitude_t publishAltitude
     Altitude of the UAV in AMSL (Above Mean Seal Level).
     
    +publishMagnetometerHeading_t publishMagnetometerHeading
     Publisher for the estimated magnetometer heading.
     
    +publishMagneticField_t publishMagneticField
     Publisher for the RAW magnetometer readings.
     
    +publishStatus_t publishStatus
     Publisher for the HW API Plugin status.
     
    +publishRcChannels_t publishRcChannels
     Publisher for the RC Channels received by the flight controller.
     
    +publishBatteryState_t publishBatteryState
     Publisher for the UAV battery state.
     
    +publishPosition_t publishPosition
     Publisher for the UAV position as estimated by the flight controller. The position is supposed to be expressed in the "world frame" provided by the common handlers.
     
    +publishOrientation_t publishOrientation
     Publisher for the UAV orientation. The orientation is supposed to be expressed in the "world frame" provided by the common handlers.
     
    +publishVelocity_t publishVelocity
     Publisher for the UAV velocity expressed in the body-fixed frame, provided by the common handlers.
     
    +publishAngularVelocity_t publishAngularVelocity
     Publisher for the intrinsic angular velocity. This can be already pre-filtered. The angular velocity is supposed to be expressed in the "body-fixed" frame provided in the common handlers.
     
    +publishOdometry_t publishOdometry
     Publisher for a general "odometry" message that can be used for vizualizing the state of the UAV, as produced by the flight controller. The MRS UAV System will use this when running the "passthrough_ state estimator.
     
    +publishOdometry_t publishGroundTruth
     Publisher for ground truth odometry which can be provided by, e.g., a simulator or a MoCap system. The MRS UAV System will use this when running the "ground_truth" state estimator.
     
    +

    Detailed Description

    +

    A structure with publisher methods provided to the HW API Plugin. The plugin can call these methods at will to provided data to the MRS UAV System. In case the HW API Plugin intents to publish data, the respective varible "produces_***" in the HW API Capabilities of the plugin is supposed to be fill in.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structmrs__uav__hw__api_1_1Publishers__t.js b/structmrs__uav__hw__api_1_1Publishers__t.js new file mode 100644 index 0000000..8951706 --- /dev/null +++ b/structmrs__uav__hw__api_1_1Publishers__t.js @@ -0,0 +1,20 @@ +var structmrs__uav__hw__api_1_1Publishers__t = +[ + [ "publishAltitude", "structmrs__uav__hw__api_1_1Publishers__t.html#a1e38ab12de7f79acfb5845f4d47f1f13", null ], + [ "publishAngularVelocity", "structmrs__uav__hw__api_1_1Publishers__t.html#a31bc9f73d8cda684df1db27181d8dcbf", null ], + [ "publishBatteryState", "structmrs__uav__hw__api_1_1Publishers__t.html#abbbd33e2c97b9fdee4a13e6ac8f3851d", null ], + [ "publishDistanceSensor", "structmrs__uav__hw__api_1_1Publishers__t.html#a2d4e6d0d2851ce5e9e3c0ab6b6aa05d4", null ], + [ "publishGNSS", "structmrs__uav__hw__api_1_1Publishers__t.html#a786d40a41a30e1bc2f19bb83d02ddfd0", null ], + [ "publishGNSSStatus", "structmrs__uav__hw__api_1_1Publishers__t.html#a8a712f6d26d186be0f037304f27e8e85", null ], + [ "publishGroundTruth", "structmrs__uav__hw__api_1_1Publishers__t.html#a243c02a6762c04c4fd7ebce7a0dcd96d", null ], + [ "publishIMU", "structmrs__uav__hw__api_1_1Publishers__t.html#a590b528334c2aa98308f448c933ec17a", null ], + [ "publishMagneticField", "structmrs__uav__hw__api_1_1Publishers__t.html#aeec348862e2945e51b222e9a1cf169f6", null ], + [ "publishMagnetometerHeading", "structmrs__uav__hw__api_1_1Publishers__t.html#a628c7d8851d011d7e050b73e6ddc10ee", null ], + [ "publishOdometry", "structmrs__uav__hw__api_1_1Publishers__t.html#ad324064c4040dbcffbb7d8abc50530eb", null ], + [ "publishOrientation", "structmrs__uav__hw__api_1_1Publishers__t.html#af10b59dba9dd243d5568d694687f5ccb", null ], + [ "publishPosition", "structmrs__uav__hw__api_1_1Publishers__t.html#a302b36b1d9b871767d40467cb3ce7534", null ], + [ "publishRcChannels", "structmrs__uav__hw__api_1_1Publishers__t.html#a85011e8a0ca4b1a6964839b14fa311b4", null ], + [ "publishRTK", "structmrs__uav__hw__api_1_1Publishers__t.html#a9d4fa0cfb267780d6f41d568ddfcd96e", null ], + [ "publishStatus", "structmrs__uav__hw__api_1_1Publishers__t.html#a4d586872bc4e08270b1e371ee9d389ef", null ], + [ "publishVelocity", "structmrs__uav__hw__api_1_1Publishers__t.html#a60b1b9d9feab8aa0dcbbe09741d19ccc", null ] +]; \ No newline at end of file diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/sync_on.png differ diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/tab_a.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/tab_s.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}