diff --git a/EcroPwmController_2LogComponent_8hpp_source.html b/EcroPwmController_2LogComponent_8hpp_source.html new file mode 100644 index 0000000..caa8396 --- /dev/null +++ b/EcroPwmController_2LogComponent_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/EcroPwmController/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __ECRO_PWM_CONTROLLER_LOG_COMPONENT__
+
6 #define __ECRO_PWM_CONTROLLER_LOG_COMPONENT__
+
7 
+
8 #include <yarp/os/LogComponent.h>
+
9 
+
10 YARP_DECLARE_LOG_COMPONENT(EPC)
+
11 
+
12 #endif // __ECRO_PWM_CONTROLLER_LOG_COMPONENT__
+
+ + + + diff --git a/EcroPwmController_8hpp_source.html b/EcroPwmController_8hpp_source.html new file mode 100644 index 0000000..7b6a31b --- /dev/null +++ b/EcroPwmController_8hpp_source.html @@ -0,0 +1,141 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/EcroPwmController/EcroPwmController.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
EcroPwmController.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __ECRO_PWM_CONTROLLER__
+
4 #define __ECRO_PWM_CONTROLLER__
+
5 
+
6 #include <yarp/dev/DeviceDriver.h>
+
7 #include <yarp/dev/ISerialDevice.h>
+
8 #include <yarp/dev/PolyDriver.h>
+
9 
+
10 #include "IRobotManager.hpp"
+
11 
+
12 namespace asrob
+
13 {
+
14 
+
19 class EcroPwmController : public yarp::dev::DeprecatedDeviceDriver,
+
20  public IRobotManager
+
21 {
+
22 public:
+
23  // -------- RobotManager declarations. Implementation in EcroPwmController.cpp --------
+
24 
+
25  //-- Robot movement related functions
+
26  bool moveForward(double value) override;
+
27  bool turnLeft(double value) override;
+
28  bool stopMovement() override;
+
29 
+
30  //-- Robot camera related functions
+
31  bool tiltDown(double value) override;
+
32  bool panLeft(double value) override;
+
33  bool stopCameraMovement() override;
+
34 
+
35  // -------- DeviceDriver declarations. Implementation in DeviceDriverImpl.cpp --------
+
36  bool open(yarp::os::Searchable& config) override;
+
37  bool close() override;
+
38 
+
39 private:
+
40  bool sendCurrentJointValues();
+
41 
+
42  yarp::dev::PolyDriver serialDevice;
+
43  yarp::dev::ISerialDevice * serial;
+
44 
+
45  int leftMotorVelocity {0};
+
46  int rightMotorVelocity {0};
+
47 };
+
48 
+
49 } // namespace asrob
+
50 
+
51 #endif // __ECRO_PWM_CONTROLLER__
+
EcroPwmController.
Definition: EcroPwmController.hpp:21
+
bool tiltDown(double value) override
Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
Definition: EcroPwmController.cpp:59
+
bool moveForward(double value) override
Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
Definition: EcroPwmController.cpp:20
+
bool stopMovement() override
Robot: Stop movement.
Definition: EcroPwmController.cpp:48
+
bool panLeft(double value) override
Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s]...
Definition: EcroPwmController.cpp:65
+
bool stopCameraMovement() override
Robot camera: Stop movement.
Definition: EcroPwmController.cpp:71
+
bool turnLeft(double value) override
Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
Definition: EcroPwmController.cpp:34
+
Definition: IRobotManager.hpp:28
+
The main, catch-all namespace for ASROB UC3M.
Definition: groups.dox:5
+
+ + + + diff --git a/EcroWheelController_2LogComponent_8hpp_source.html b/EcroWheelController_2LogComponent_8hpp_source.html new file mode 100644 index 0000000..7522b04 --- /dev/null +++ b/EcroWheelController_2LogComponent_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/EcroWheelController/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __ECRO_WHEEL_CONTROLLER_LOG_COMPONENT__
+
6 #define __ECRO_WHEEL_CONTROLLER_LOG_COMPONENT__
+
7 
+
8 #include <yarp/os/LogComponent.h>
+
9 
+
10 YARP_DECLARE_LOG_COMPONENT(EWC)
+
11 
+
12 #endif // __ECRO_WHEEL_CONTROLLER_LOG_COMPONENT__
+
+ + + + diff --git a/EcroWheelController_8hpp_source.html b/EcroWheelController_8hpp_source.html new file mode 100644 index 0000000..8ca52ab --- /dev/null +++ b/EcroWheelController_8hpp_source.html @@ -0,0 +1,140 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/EcroWheelController/EcroWheelController.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
EcroWheelController.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __ECRO_WHEEL_CONTROLLER__
+
6 #define __ECRO_WHEEL_CONTROLLER__
+
7 
+
8 #include <yarp/dev/DeviceDriver.h>
+
9 #include <yarp/dev/ISerialDevice.h>
+
10 #include <yarp/dev/PolyDriver.h>
+
11 
+
12 #include "IRobotManager.hpp"
+
13 
+
14 namespace asrob
+
15 {
+
16 
+
21 class EcroWheelController : public yarp::dev::DeprecatedDeviceDriver,
+
22  public IRobotManager
+
23 {
+
24 public:
+
25  // -------- RobotManager declarations. Implementation in EcroWheelController.cpp --------
+
26 
+
27  //-- Robot movement related functions
+
28  bool moveForward(double value) override;
+
29  bool turnLeft(double value) override;
+
30  bool stopMovement() override;
+
31 
+
32  //-- Robot camera related functions
+
33  bool tiltDown(double value) override;
+
34  bool panLeft(double value) override;
+
35  bool stopCameraMovement() override;
+
36 
+
37  // -------- DeviceDriver declarations. Implementation in DeviceDriverImpl.cpp --------
+
38  bool open(yarp::os::Searchable& config) override;
+
39  bool close() override;
+
40 
+
41 private:
+
42  bool sendCurrentJointValues(int16_t positions1);
+
43 
+
44  yarp::dev::PolyDriver serialDevice;
+
45  yarp::dev::ISerialDevice * serial;
+
46 };
+
47 
+
48 } // namespace asrob
+
49 
+
50 #endif // __ECRO_WHEEL_CONTROLLER__
+
EcroWheelController.
Definition: EcroWheelController.hpp:23
+
bool panLeft(double value) override
Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s]...
Definition: EcroWheelController.cpp:128
+
bool tiltDown(double value) override
Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
Definition: EcroWheelController.cpp:122
+
bool stopCameraMovement() override
Robot camera: Stop movement.
Definition: EcroWheelController.cpp:134
+
bool moveForward(double value) override
Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
Definition: EcroWheelController.cpp:24
+
bool turnLeft(double value) override
Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
Definition: EcroWheelController.cpp:55
+
bool stopMovement() override
Robot: Stop movement.
Definition: EcroWheelController.cpp:103
+
Definition: IRobotManager.hpp:28
+
The main, catch-all namespace for ASROB UC3M.
Definition: groups.dox:5
+
+ + + + diff --git a/FakeMotorController_2LogComponent_8hpp_source.html b/FakeMotorController_2LogComponent_8hpp_source.html new file mode 100644 index 0000000..251d32f --- /dev/null +++ b/FakeMotorController_2LogComponent_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/FakeMotorController/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __FAKE_MOTOR_CONTROLLER_LOG_COMPONENT__
+
6 #define __FAKE_MOTOR_CONTROLLER_LOG_COMPONENT__
+
7 
+
8 #include <yarp/os/LogComponent.h>
+
9 
+
10 YARP_DECLARE_LOG_COMPONENT(FMC)
+
11 
+
12 #endif // __FAKE_MOTOR_CONTROLLER_LOG_COMPONENT__
+
+ + + + diff --git a/FakeMotorController_8hpp_source.html b/FakeMotorController_8hpp_source.html new file mode 100644 index 0000000..709e06e --- /dev/null +++ b/FakeMotorController_8hpp_source.html @@ -0,0 +1,128 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/FakeMotorController/FakeMotorController.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
FakeMotorController.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __FAKE_MOTOR_CONTROLLER__
+
6 #define __FAKE_MOTOR_CONTROLLER__
+
7 
+
8 #include <yarp/dev/DeviceDriver.h>
+
9 
+
10 #include "IRobotManager.hpp"
+
11 
+
12 namespace asrob
+
13 {
+
14 
+
19 class FakeMotorController : public yarp::dev::DeviceDriver,
+
20  public IRobotManager
+
21 {
+
22 public:
+
23  // -------- RobotManager declarations. Implementation in FakeMotorController.cpp --------
+
24  bool moveForward(double value) override;
+
25  bool turnLeft(double value) override;
+
26  bool stopMovement() override;
+
27  bool tiltDown(double value) override;
+
28  bool panLeft(double value) override;
+
29  bool stopCameraMovement() override;
+
30 
+
31  // -------- DeviceDriver declarations. Implementation in DeviceDriverImpl.cpp --------
+
32  bool open(yarp::os::Searchable& config) override;
+
33  bool close() override;
+
34 };
+
35 
+
36 } // namespace asrob
+
37 
+
38 #endif // __FAKE_MOTOR_CONTROLLER__
+
FakeMotorController.
Definition: FakeMotorController.hpp:21
+
bool tiltDown(double value) override
Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
Definition: FakeMotorController.cpp:31
+
bool moveForward(double value) override
Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
Definition: FakeMotorController.cpp:13
+
bool panLeft(double value) override
Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s]...
Definition: FakeMotorController.cpp:37
+
bool stopCameraMovement() override
Robot camera: Stop movement.
Definition: FakeMotorController.cpp:43
+
bool stopMovement() override
Robot: Stop movement.
Definition: FakeMotorController.cpp:25
+
bool turnLeft(double value) override
Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
Definition: FakeMotorController.cpp:19
+
Definition: IRobotManager.hpp:28
+
The main, catch-all namespace for ASROB UC3M.
Definition: groups.dox:5
+
+ + + + diff --git a/IRobotManager_8hpp_source.html b/IRobotManager_8hpp_source.html new file mode 100644 index 0000000..e4a9d73 --- /dev/null +++ b/IRobotManager_8hpp_source.html @@ -0,0 +1,133 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/IRobotManager.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRobotManager.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __I_ROBOT_MANAGER_HPP__
+
6 #define __I_ROBOT_MANAGER_HPP__
+
7 
+
8 #include <yarp/os/Vocab.h>
+
9 
+
10 constexpr int VOCAB_MOVE_FORWARD = yarp::os::createVocab32('m','o','v','f');
+
11 constexpr int VOCAB_TURN_LEFT = yarp::os::createVocab32('t','r','n','l');
+
12 constexpr int VOCAB_STOP_MOVEMENT = yarp::os::createVocab32('s','t','p','m');
+
13 constexpr int VOCAB_TILT_DOWN = yarp::os::createVocab32('t','l','t','d');
+
14 constexpr int VOCAB_PAN_LEFT = yarp::os::createVocab32('p','a','n','l');
+
15 constexpr int VOCAB_STOP_CAMERA_MOVEMENT = yarp::os::createVocab32('s','t','p','c');
+
16 
+
17 namespace asrob
+
18 {
+
19 
+ +
28 {
+
29 public:
+
31  virtual bool moveForward(double value) = 0;
+
32 
+
34  virtual bool turnLeft(double value) = 0;
+
35 
+
37  virtual bool stopMovement() = 0;
+
38 
+
40  virtual bool tiltDown(double value) = 0;
+
41 
+
43  virtual bool panLeft(double value) = 0;
+
44 
+
46  virtual bool stopCameraMovement() = 0;
+
47 
+
48  virtual ~IRobotManager() = default;
+
49 };
+
50 
+
51 }
+
52 
+
53 #endif // __I_ROBOT_MANAGER_HPP__
+
Definition: IRobotManager.hpp:28
+
virtual bool panLeft(double value)=0
Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s]...
+
virtual bool stopCameraMovement()=0
Robot camera: Stop movement.
+
virtual bool stopMovement()=0
Robot: Stop movement.
+
virtual bool tiltDown(double value)=0
Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
+
virtual bool turnLeft(double value)=0
Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
+
virtual bool moveForward(double value)=0
Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
+
The main, catch-all namespace for ASROB UC3M.
Definition: groups.dox:5
+
+ + + + diff --git a/LaserTowerOfDeathController_2LogComponent_8hpp_source.html b/LaserTowerOfDeathController_2LogComponent_8hpp_source.html new file mode 100644 index 0000000..ef22bdc --- /dev/null +++ b/LaserTowerOfDeathController_2LogComponent_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/LaserTowerOfDeathController/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __LASER_TOWER_OF_DEATH_CONTROLLER_LOG_COMPONENT__
+
6 #define __LASER_TOWER_OF_DEATH_CONTROLLER_LOG_COMPONENT__
+
7 
+
8 #include <yarp/os/LogComponent.h>
+
9 
+
10 YARP_DECLARE_LOG_COMPONENT(LTODC)
+
11 
+
12 #endif // __LASER_TOWER_OF_DEATH_CONTROLLER_LOG_COMPONENT__
+
+ + + + diff --git a/LaserTowerOfDeathController_8hpp_source.html b/LaserTowerOfDeathController_8hpp_source.html new file mode 100644 index 0000000..c8eb088 --- /dev/null +++ b/LaserTowerOfDeathController_8hpp_source.html @@ -0,0 +1,144 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/LaserTowerOfDeathController/LaserTowerOfDeathController.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LaserTowerOfDeathController.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __LASER_TOWER_OF_DEATH_CONTROLLER__
+
6 #define __LASER_TOWER_OF_DEATH_CONTROLLER__
+
7 
+
8 #include <yarp/dev/DeviceDriver.h>
+
9 #include <yarp/dev/ISerialDevice.h>
+
10 #include <yarp/dev/PolyDriver.h>
+
11 
+
12 #include "IRobotManager.hpp"
+
13 
+
14 namespace asrob
+
15 {
+
16 
+
21 class LaserTowerOfDeathController : public yarp::dev::DeviceDriver,
+
22  public IRobotManager
+
23 {
+
24 public:
+
25  // -------- RobotManager declarations. Implementation in LaserTowerOfDeathController.cpp --------
+
26 
+
27  //-- Robot movement related functions
+
28  bool moveForward(double value) override;
+
29  bool turnLeft(double value) override;
+
30  bool stopMovement() override;
+
31 
+
32  //-- Robot camera related functions
+
33  bool tiltDown(double value) override;
+
34  bool panLeft(double value) override;
+
35  bool stopCameraMovement() override;
+
36 
+
37  // -------- DeviceDriver declarations. Implementation in DeviceDriverImpl.cpp --------
+
38  bool open(yarp::os::Searchable& config) override;
+
39  bool close() override;
+
40 
+
41 private:
+
42  bool sendCurrentJointValues();
+
43  bool checkConnection();
+
44 
+
45  yarp::dev::PolyDriver serialDevice;
+
46  yarp::dev::ISerialDevice * serial;
+
47 
+
48  int panJointValue {90};
+
49  int tiltJointValue {90};
+
50 };
+
51 
+
52 } // namespace asrob
+
53 
+
54 #endif // __LASER_TOWER_OF_DEATH_CONTROLLER__
+
Definition: IRobotManager.hpp:28
+
LaserTowerOfDeathController.
Definition: LaserTowerOfDeathController.hpp:23
+
bool turnLeft(double value) override
Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
Definition: LaserTowerOfDeathController.cpp:27
+
bool moveForward(double value) override
Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
Definition: LaserTowerOfDeathController.cpp:21
+
bool stopMovement() override
Robot: Stop movement.
Definition: LaserTowerOfDeathController.cpp:33
+
bool stopCameraMovement() override
Robot camera: Stop movement.
Definition: LaserTowerOfDeathController.cpp:53
+
bool tiltDown(double value) override
Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
Definition: LaserTowerOfDeathController.cpp:39
+
bool panLeft(double value) override
Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s]...
Definition: LaserTowerOfDeathController.cpp:46
+
The main, catch-all namespace for ASROB UC3M.
Definition: groups.dox:5
+
+ + + + diff --git a/RaspiOnePwmMotorController_2LogComponent_8hpp_source.html b/RaspiOnePwmMotorController_2LogComponent_8hpp_source.html new file mode 100644 index 0000000..15e1d88 --- /dev/null +++ b/RaspiOnePwmMotorController_2LogComponent_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RaspiOnePwmMotorController/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __RASPI_ONE_PWM_MOTOR_CONTROLLER_LOG_COMPONENT__
+
6 #define __RASPI_ONE_PWM_MOTOR_CONTROLLER_LOG_COMPONENT__
+
7 
+
8 #include <yarp/os/LogComponent.h>
+
9 
+
10 YARP_DECLARE_LOG_COMPONENT(ROPMC)
+
11 
+
12 #endif // __RASPI_ONE_PWM_MOTOR_CONTROLLER_LOG_COMPONENT__
+
+ + + + diff --git a/RaspiOnePwmMotorController_8hpp_source.html b/RaspiOnePwmMotorController_8hpp_source.html new file mode 100644 index 0000000..bd9bccc --- /dev/null +++ b/RaspiOnePwmMotorController_8hpp_source.html @@ -0,0 +1,144 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RaspiOnePwmMotorController/RaspiOnePwmMotorController.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RaspiOnePwmMotorController.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __RASPI_ONE_PWM_MOTOR_CONTROLLER__
+
6 #define __RASPI_ONE_PWM_MOTOR_CONTROLLER__
+
7 
+
8 #include <vector>
+
9 
+
10 #include <yarp/dev/DeviceDriver.h>
+
11 
+
12 #include "IRobotManager.hpp"
+
13 
+
14 extern "C" {
+
15 #include "pwm.h"
+
16 }
+
17 
+
18 namespace asrob
+
19 {
+
20 
+
25 class RaspiOnePwmMotorController : public yarp::dev::DeviceDriver,
+
26  public IRobotManager
+
27 {
+
28 public:
+
29  // -------- RobotManager declarations. Implementation in RaspiOnePwmMotorController.cpp --------
+
30 
+
31  //-- Robot movement related functions
+
32  bool moveForward(double value) override;
+
33  bool turnLeft(double value) override;
+
34  bool stopMovement() override;
+
35 
+
36  //-- Robot camera related functions
+
37  bool tiltDown(double value) override;
+
38  bool panLeft(double value) override;
+
39  bool stopCameraMovement() override;
+
40 
+
41  // -------- DeviceDriver declarations. Implementation in DeviceDriverImpl.cpp --------
+
42  bool open(yarp::os::Searchable& config) override;
+
43  bool close() override;
+
44 
+
45 private:
+
50  bool indexWithinRange(const int& idx);
+
51 
+
52  std::vector<int> gpios;
+
53 };
+
54 
+
55 } // namespace asrob
+
56 
+
57 #endif // __RASPI_ONE_PWM_MOTOR_CONTROLLER__
+
Definition: IRobotManager.hpp:28
+
RaspiOnePwmMotorController.
Definition: RaspiOnePwmMotorController.hpp:27
+
bool turnLeft(double value) override
Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
Definition: RaspiOnePwmMotorController.cpp:37
+
bool indexWithinRange(const int &idx)
Definition: RaspiOnePwmMotorController.cpp:13
+
bool moveForward(double value) override
Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
Definition: RaspiOnePwmMotorController.cpp:24
+
bool tiltDown(double value) override
Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
Definition: RaspiOnePwmMotorController.cpp:64
+
bool stopMovement() override
Robot: Stop movement.
Definition: RaspiOnePwmMotorController.cpp:50
+
bool stopCameraMovement() override
Robot camera: Stop movement.
Definition: RaspiOnePwmMotorController.cpp:76
+
bool panLeft(double value) override
Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s]...
Definition: RaspiOnePwmMotorController.cpp:70
+
The main, catch-all namespace for ASROB UC3M.
Definition: groups.dox:5
+
+ + + + diff --git a/RaspiTwoPwmMotorController_2LogComponent_8hpp_source.html b/RaspiTwoPwmMotorController_2LogComponent_8hpp_source.html new file mode 100644 index 0000000..4945837 --- /dev/null +++ b/RaspiTwoPwmMotorController_2LogComponent_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RaspiTwoPwmMotorController/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __RASPI_TWO_PWM_MOTOR_CONTROLLER_LOG_COMPONENT__
+
6 #define __RASPI_TWO_PWM_MOTOR_CONTROLLER_LOG_COMPONENT__
+
7 
+
8 #include <yarp/os/LogComponent.h>
+
9 
+
10 YARP_DECLARE_LOG_COMPONENT(RTPMC)
+
11 
+
12 #endif // __RASPI_TWO_PWM_MOTOR_CONTROLLER_LOG_COMPONENT__
+
+ + + + diff --git a/RaspiTwoPwmMotorController_8hpp_source.html b/RaspiTwoPwmMotorController_8hpp_source.html new file mode 100644 index 0000000..72527e0 --- /dev/null +++ b/RaspiTwoPwmMotorController_8hpp_source.html @@ -0,0 +1,145 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RaspiTwoPwmMotorController/RaspiTwoPwmMotorController.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RaspiTwoPwmMotorController.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __RASPI_TWO_PWM_MOTOR_CONTROLLER__
+
6 #define __RASPI_TWO_PWM_MOTOR_CONTROLLER__
+
7 
+
8 #include <vector>
+
9 #include <yarp/dev/DeviceDriver.h>
+
10 #include <wiringPi.h>
+
11 
+
12 #include "IRobotManager.hpp"
+
13 
+
14 namespace asrob
+
15 {
+
16 
+
21 class RaspiTwoPwmMotorController : public yarp::dev::DeviceDriver,
+
22  public IRobotManager
+
23 {
+
24 public:
+
25  // -------- RobotManager declarations. Implementation in RaspiTwoPwmMotorController.cpp --------
+
26 
+
27  //-- Robot movement related functions
+
28  bool moveForward(double value) override;
+
29  bool turnLeft(double value) override;
+
30  bool stopMovement() override;
+
31 
+
32  //-- Robot camera related functions
+
33  bool tiltDown(double value) override;
+
34  bool panLeft(double value) override;
+
35  bool stopCameraMovement() override;
+
36 
+
37  // -------- DeviceDriver declarations. Implementation in DeviceDriverImpl.cpp --------
+
38  bool open(yarp::os::Searchable& config) override;
+
39  bool close() override;
+
40 
+
41 private:
+
46  bool indexWithinRange(const int& idx);
+
47 
+
48  std::vector<int> gpios;
+
49 
+
50  static const int LEFT_MOTOR_IN1;
+
51  static const int LEFT_MOTOR_IN2;
+
52  static const int RIGHT_MOTOR_IN1;
+
53  static const int RIGHT_MOTOR_IN2;
+
54 };
+
55 
+
56 } // namespace asrob
+
57 
+
58 #endif // __RASPI_TWO_PWM_MOTOR_CONTROLLER__
+
Definition: IRobotManager.hpp:28
+
RaspiTwoPwmMotorController.
Definition: RaspiTwoPwmMotorController.hpp:23
+
bool stopCameraMovement() override
Robot camera: Stop movement.
Definition: RaspiTwoPwmMotorController.cpp:79
+
bool moveForward(double value) override
Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
Definition: RaspiTwoPwmMotorController.cpp:30
+
bool panLeft(double value) override
Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s]...
Definition: RaspiTwoPwmMotorController.cpp:73
+
bool stopMovement() override
Robot: Stop movement.
Definition: RaspiTwoPwmMotorController.cpp:54
+
bool tiltDown(double value) override
Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
Definition: RaspiTwoPwmMotorController.cpp:67
+
bool indexWithinRange(const int &idx)
Definition: RaspiTwoPwmMotorController.cpp:19
+
bool turnLeft(double value) override
Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
Definition: RaspiTwoPwmMotorController.cpp:42
+
The main, catch-all namespace for ASROB UC3M.
Definition: groups.dox:5
+
+ + + + diff --git a/RobotClient_2LogComponent_8hpp_source.html b/RobotClient_2LogComponent_8hpp_source.html new file mode 100644 index 0000000..8bd2694 --- /dev/null +++ b/RobotClient_2LogComponent_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RobotClient/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __ROBOT_CLIENT_LOG_COMPONENT__
+
6 #define __ROBOT_CLIENT_LOG_COMPONENT__
+
7 
+
8 #include <yarp/os/LogComponent.h>
+
9 
+
10 YARP_DECLARE_LOG_COMPONENT(RC)
+
11 
+
12 #endif // __ROBOT_CLIENT_LOG_COMPONENT__
+
+ + + + diff --git a/RobotClient_8hpp_source.html b/RobotClient_8hpp_source.html new file mode 100644 index 0000000..f0d0f88 --- /dev/null +++ b/RobotClient_8hpp_source.html @@ -0,0 +1,134 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RobotClient/RobotClient.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RobotClient.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __ROBOT_CLIENT__
+
6 #define __ROBOT_CLIENT__
+
7 
+
8 #include <yarp/os/RpcClient.h>
+
9 #include <yarp/dev/DeviceDriver.h>
+
10 
+
11 #include "IRobotManager.hpp"
+
12 
+
13 namespace asrob
+
14 {
+
15 
+
20 class RobotClient : public yarp::dev::DeviceDriver,
+
21  public IRobotManager
+
22 {
+
23 public:
+
24  // -------- DeviceDriver declarations. Implementation in DeviceDriverImpl.cpp --------
+
25  bool open(yarp::os::Searchable& config) override;
+
26  bool close() override;
+
27 
+
28  // -------- Implementation in RobotClient.cpp --------
+
29  bool moveForward(double value) override;
+
30  bool turnLeft(double value) override;
+
31  bool stopMovement() override;
+
32  bool tiltDown(double value) override;
+
33  bool panLeft(double value) override;
+
34  bool stopCameraMovement() override;
+
35 
+
36 private:
+
37  yarp::os::RpcClient rpcClient;
+
38  bool send1vocab1double(int vocab, double value);
+
39  bool send1vocab(int vocab);
+
40 };
+
41 
+
42 } // namespace asrob
+
43 
+
44 #endif // __ROBOT_CLIENT__
+
Definition: IRobotManager.hpp:28
+
RobotClient.
Definition: RobotClient.hpp:22
+
bool tiltDown(double value) override
Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
Definition: RobotClient.cpp:32
+
bool panLeft(double value) override
Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s]...
Definition: RobotClient.cpp:38
+
bool stopMovement() override
Robot: Stop movement.
Definition: RobotClient.cpp:26
+
bool stopCameraMovement() override
Robot camera: Stop movement.
Definition: RobotClient.cpp:44
+
bool moveForward(double value) override
Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
Definition: RobotClient.cpp:14
+
bool turnLeft(double value) override
Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
Definition: RobotClient.cpp:20
+
The main, catch-all namespace for ASROB UC3M.
Definition: groups.dox:5
+
+ + + + diff --git a/RobotServer_2LogComponent_8hpp_source.html b/RobotServer_2LogComponent_8hpp_source.html new file mode 100644 index 0000000..6170ce5 --- /dev/null +++ b/RobotServer_2LogComponent_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RobotServer/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __ROBOT_SERVER_LOG_COMPONENT__
+
6 #define __ROBOT_SERVER_LOG_COMPONENT__
+
7 
+
8 #include <yarp/os/LogComponent.h>
+
9 
+
10 YARP_DECLARE_LOG_COMPONENT(RS)
+
11 
+
12 #endif // __ROBOT_SERVER_LOG_COMPONENT__
+
+ + + + diff --git a/RobotServer_8hpp_source.html b/RobotServer_8hpp_source.html new file mode 100644 index 0000000..698853f --- /dev/null +++ b/RobotServer_8hpp_source.html @@ -0,0 +1,125 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RobotServer/RobotServer.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RobotServer.hpp
+
+
+
1 // Authors: see AUTHORS.md at project root.
+
2 // CopyPolicy: released under the terms of the LGPLv2.1, see LICENSE at project root.
+
3 // URL: https://github.com/asrob-uc3m/yarp-devices
+
4 
+
5 #ifndef __ROBOT_SERVER__
+
6 #define __ROBOT_SERVER__
+
7 
+
8 #include <yarp/os/RpcServer.h>
+
9 
+
10 #include <yarp/dev/DeviceDriver.h>
+
11 #include <yarp/dev/PolyDriver.h>
+
12 
+
13 #include "IRobotManager.hpp"
+
14 
+
15 namespace asrob
+
16 {
+
17 
+
22 class RobotServer : public yarp::dev::DeviceDriver,
+
23  public yarp::os::PortReader
+
24 {
+
25 public:
+
26  // -------- DeviceDriver declarations. Implementation in DeviceDriverImpl.cpp --------
+
27  bool open(yarp::os::Searchable& config) override;
+
28  bool close() override;
+
29 
+
30  // -------- PortReader declarations. Implementation in RobotServer.cpp --------
+
31  bool read(yarp::os::ConnectionReader& connection) override;
+
32 
+
33 private:
+
34  yarp::os::RpcServer rpcServer;
+
35  yarp::dev::PolyDriver robotDevice;
+
36  IRobotManager* iRobotManager;
+
37 };
+
38 
+
39 } // namespace asrob
+
40 
+
41 #endif // __ROBOT_SERVER__
+
Definition: IRobotManager.hpp:28
+
RobotServer.
Definition: RobotServer.hpp:24
+
The main, catch-all namespace for ASROB UC3M.
Definition: groups.dox:5
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..a9ccf6b --- /dev/null +++ b/annotated.html @@ -0,0 +1,99 @@ + + + + + + + +yarp-devices: Class List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + +
 NasrobThe main, catch-all namespace for ASROB UC3M
 CEcroPwmControllerEcroPwmController
 CEcroWheelControllerEcroWheelController
 CFakeMotorControllerFakeMotorController
 CIRobotManager
 CLaserTowerOfDeathControllerLaserTowerOfDeathController
 CRaspiOnePwmMotorControllerRaspiOnePwmMotorController
 CRaspiTwoPwmMotorControllerRaspiTwoPwmMotorController
 CRobotClientRobotClient
 CRobotServerRobotServer
 NRobotPy
 CRobot
 Cchannel
 Cdma_cb_t
+
+
+ + + + 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/classRobotPy_1_1Robot-members.html b/classRobotPy_1_1Robot-members.html new file mode 100644 index 0000000..896a5dc --- /dev/null +++ b/classRobotPy_1_1Robot-members.html @@ -0,0 +1,91 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RobotPy.Robot Member List
+
+
+ +

This is the complete list of members for RobotPy.Robot, including all inherited members.

+ + + + +
__init__(self) (defined in RobotPy.Robot)RobotPy.Robot
motors (defined in RobotPy.Robot)RobotPy.Robot
robotDevice (defined in RobotPy.Robot)RobotPy.Robot
+ + + + diff --git a/classRobotPy_1_1Robot.html b/classRobotPy_1_1Robot.html new file mode 100644 index 0000000..a1cb73e --- /dev/null +++ b/classRobotPy_1_1Robot.html @@ -0,0 +1,108 @@ + + + + + + + +yarp-devices: RobotPy.Robot Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Public Attributes | +List of all members
+
+
RobotPy.Robot Class Reference
+
+
+ + + + +

+Public Member Functions

+def __init__ (self)
 
+ + + + + +

+Public Attributes

robotDevice
 
motors
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classasrob_1_1EcroPwmController-members.html b/classasrob_1_1EcroPwmController-members.html new file mode 100644 index 0000000..5770b0c --- /dev/null +++ b/classasrob_1_1EcroPwmController-members.html @@ -0,0 +1,102 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
asrob::EcroPwmController Member List
+
+
+ +

This is the complete list of members for asrob::EcroPwmController, including all inherited members.

+ + + + + + + + + + + + + + + +
close() override (defined in asrob::EcroPwmController)asrob::EcroPwmController
leftMotorVelocity (defined in asrob::EcroPwmController)asrob::EcroPwmControllerprivate
moveForward(double value) overrideasrob::EcroPwmControllervirtual
open(yarp::os::Searchable &config) override (defined in asrob::EcroPwmController)asrob::EcroPwmController
panLeft(double value) overrideasrob::EcroPwmControllervirtual
rightMotorVelocity (defined in asrob::EcroPwmController)asrob::EcroPwmControllerprivate
sendCurrentJointValues() (defined in asrob::EcroPwmController)asrob::EcroPwmControllerprivate
serial (defined in asrob::EcroPwmController)asrob::EcroPwmControllerprivate
serialDevice (defined in asrob::EcroPwmController)asrob::EcroPwmControllerprivate
stopCameraMovement() overrideasrob::EcroPwmControllervirtual
stopMovement() overrideasrob::EcroPwmControllervirtual
tiltDown(double value) overrideasrob::EcroPwmControllervirtual
turnLeft(double value) overrideasrob::EcroPwmControllervirtual
~IRobotManager()=default (defined in asrob::IRobotManager)asrob::IRobotManagervirtual
+ + + + diff --git a/classasrob_1_1EcroPwmController.html b/classasrob_1_1EcroPwmController.html new file mode 100644 index 0000000..be5b586 --- /dev/null +++ b/classasrob_1_1EcroPwmController.html @@ -0,0 +1,164 @@ + + + + + + + +yarp-devices: asrob::EcroPwmController Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Private Member Functions | +Private Attributes | +List of all members
+
+
asrob::EcroPwmController Class Reference
+
+
+ +

EcroPwmController. +

+ +

#include <EcroPwmController.hpp>

+
+Inheritance diagram for asrob::EcroPwmController:
+
+
+ + +asrob::IRobotManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool moveForward (double value) override
 Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
 
+bool turnLeft (double value) override
 Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
 
+bool stopMovement () override
 Robot: Stop movement.
 
+bool tiltDown (double value) override
 Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
 
+bool panLeft (double value) override
 Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s].
 
+bool stopCameraMovement () override
 Robot camera: Stop movement.
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
+ + + +

+Private Member Functions

+bool sendCurrentJointValues ()
 
+ + + + + + + + + +

+Private Attributes

+yarp::dev::PolyDriver serialDevice
 
+yarp::dev::ISerialDevice * serial
 
+int leftMotorVelocity {0}
 
+int rightMotorVelocity {0}
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classasrob_1_1EcroPwmController.png b/classasrob_1_1EcroPwmController.png new file mode 100644 index 0000000..5a0cfda Binary files /dev/null and b/classasrob_1_1EcroPwmController.png differ diff --git a/classasrob_1_1EcroWheelController-members.html b/classasrob_1_1EcroWheelController-members.html new file mode 100644 index 0000000..68f10c6 --- /dev/null +++ b/classasrob_1_1EcroWheelController-members.html @@ -0,0 +1,100 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
asrob::EcroWheelController Member List
+
+
+ +

This is the complete list of members for asrob::EcroWheelController, including all inherited members.

+ + + + + + + + + + + + + +
close() override (defined in asrob::EcroWheelController)asrob::EcroWheelController
moveForward(double value) overrideasrob::EcroWheelControllervirtual
open(yarp::os::Searchable &config) override (defined in asrob::EcroWheelController)asrob::EcroWheelController
panLeft(double value) overrideasrob::EcroWheelControllervirtual
sendCurrentJointValues(int16_t positions1) (defined in asrob::EcroWheelController)asrob::EcroWheelControllerprivate
serial (defined in asrob::EcroWheelController)asrob::EcroWheelControllerprivate
serialDevice (defined in asrob::EcroWheelController)asrob::EcroWheelControllerprivate
stopCameraMovement() overrideasrob::EcroWheelControllervirtual
stopMovement() overrideasrob::EcroWheelControllervirtual
tiltDown(double value) overrideasrob::EcroWheelControllervirtual
turnLeft(double value) overrideasrob::EcroWheelControllervirtual
~IRobotManager()=default (defined in asrob::IRobotManager)asrob::IRobotManagervirtual
+ + + + diff --git a/classasrob_1_1EcroWheelController.html b/classasrob_1_1EcroWheelController.html new file mode 100644 index 0000000..3a87b08 --- /dev/null +++ b/classasrob_1_1EcroWheelController.html @@ -0,0 +1,158 @@ + + + + + + + +yarp-devices: asrob::EcroWheelController Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Private Member Functions | +Private Attributes | +List of all members
+
+
asrob::EcroWheelController Class Reference
+
+
+ +

EcroWheelController. +

+ +

#include <EcroWheelController.hpp>

+
+Inheritance diagram for asrob::EcroWheelController:
+
+
+ + +asrob::IRobotManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool moveForward (double value) override
 Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
 
+bool turnLeft (double value) override
 Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
 
+bool stopMovement () override
 Robot: Stop movement.
 
+bool tiltDown (double value) override
 Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
 
+bool panLeft (double value) override
 Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s].
 
+bool stopCameraMovement () override
 Robot camera: Stop movement.
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
+ + + +

+Private Member Functions

+bool sendCurrentJointValues (int16_t positions1)
 
+ + + + + +

+Private Attributes

+yarp::dev::PolyDriver serialDevice
 
+yarp::dev::ISerialDevice * serial
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classasrob_1_1EcroWheelController.png b/classasrob_1_1EcroWheelController.png new file mode 100644 index 0000000..56d4e74 Binary files /dev/null and b/classasrob_1_1EcroWheelController.png differ diff --git a/classasrob_1_1FakeMotorController-members.html b/classasrob_1_1FakeMotorController-members.html new file mode 100644 index 0000000..44824aa --- /dev/null +++ b/classasrob_1_1FakeMotorController-members.html @@ -0,0 +1,97 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
asrob::FakeMotorController Member List
+
+
+ +

This is the complete list of members for asrob::FakeMotorController, including all inherited members.

+ + + + + + + + + + +
close() override (defined in asrob::FakeMotorController)asrob::FakeMotorController
moveForward(double value) overrideasrob::FakeMotorControllervirtual
open(yarp::os::Searchable &config) override (defined in asrob::FakeMotorController)asrob::FakeMotorController
panLeft(double value) overrideasrob::FakeMotorControllervirtual
stopCameraMovement() overrideasrob::FakeMotorControllervirtual
stopMovement() overrideasrob::FakeMotorControllervirtual
tiltDown(double value) overrideasrob::FakeMotorControllervirtual
turnLeft(double value) overrideasrob::FakeMotorControllervirtual
~IRobotManager()=default (defined in asrob::IRobotManager)asrob::IRobotManagervirtual
+ + + + diff --git a/classasrob_1_1FakeMotorController.html b/classasrob_1_1FakeMotorController.html new file mode 100644 index 0000000..066f4e0 --- /dev/null +++ b/classasrob_1_1FakeMotorController.html @@ -0,0 +1,141 @@ + + + + + + + +yarp-devices: asrob::FakeMotorController Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +List of all members
+
+
asrob::FakeMotorController Class Reference
+
+
+ +

FakeMotorController. +

+ +

#include <FakeMotorController.hpp>

+
+Inheritance diagram for asrob::FakeMotorController:
+
+
+ + +asrob::IRobotManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool moveForward (double value) override
 Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
 
+bool turnLeft (double value) override
 Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
 
+bool stopMovement () override
 Robot: Stop movement.
 
+bool tiltDown (double value) override
 Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
 
+bool panLeft (double value) override
 Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s].
 
+bool stopCameraMovement () override
 Robot camera: Stop movement.
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classasrob_1_1FakeMotorController.png b/classasrob_1_1FakeMotorController.png new file mode 100644 index 0000000..0b43891 Binary files /dev/null and b/classasrob_1_1FakeMotorController.png differ diff --git a/classasrob_1_1IRobotManager-members.html b/classasrob_1_1IRobotManager-members.html new file mode 100644 index 0000000..44023f4 --- /dev/null +++ b/classasrob_1_1IRobotManager-members.html @@ -0,0 +1,95 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
asrob::IRobotManager Member List
+
+
+ +

This is the complete list of members for asrob::IRobotManager, including all inherited members.

+ + + + + + + + +
moveForward(double value)=0asrob::IRobotManagerpure virtual
panLeft(double value)=0asrob::IRobotManagerpure virtual
stopCameraMovement()=0asrob::IRobotManagerpure virtual
stopMovement()=0asrob::IRobotManagerpure virtual
tiltDown(double value)=0asrob::IRobotManagerpure virtual
turnLeft(double value)=0asrob::IRobotManagerpure virtual
~IRobotManager()=default (defined in asrob::IRobotManager)asrob::IRobotManagervirtual
+ + + + diff --git a/classasrob_1_1IRobotManager.html b/classasrob_1_1IRobotManager.html new file mode 100644 index 0000000..e98c132 --- /dev/null +++ b/classasrob_1_1IRobotManager.html @@ -0,0 +1,134 @@ + + + + + + + +yarp-devices: asrob::IRobotManager Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +List of all members
+
+
asrob::IRobotManager Class Referenceabstract
+
+
+
+Inheritance diagram for asrob::IRobotManager:
+
+
+ + +asrob::EcroPwmController +asrob::EcroWheelController +asrob::FakeMotorController +asrob::LaserTowerOfDeathController +asrob::RaspiOnePwmMotorController +asrob::RaspiTwoPwmMotorController +asrob::RobotClient + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual bool moveForward (double value)=0
 Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
 
+virtual bool turnLeft (double value)=0
 Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
 
+virtual bool stopMovement ()=0
 Robot: Stop movement.
 
+virtual bool tiltDown (double value)=0
 Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
 
+virtual bool panLeft (double value)=0
 Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s].
 
+virtual bool stopCameraMovement ()=0
 Robot camera: Stop movement.
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classasrob_1_1IRobotManager.png b/classasrob_1_1IRobotManager.png new file mode 100644 index 0000000..d5ac5ef Binary files /dev/null and b/classasrob_1_1IRobotManager.png differ diff --git a/classasrob_1_1LaserTowerOfDeathController-members.html b/classasrob_1_1LaserTowerOfDeathController-members.html new file mode 100644 index 0000000..20875b1 --- /dev/null +++ b/classasrob_1_1LaserTowerOfDeathController-members.html @@ -0,0 +1,103 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
asrob::LaserTowerOfDeathController Member List
+
+
+ +

This is the complete list of members for asrob::LaserTowerOfDeathController, including all inherited members.

+ + + + + + + + + + + + + + + + +
checkConnection() (defined in asrob::LaserTowerOfDeathController)asrob::LaserTowerOfDeathControllerprivate
close() override (defined in asrob::LaserTowerOfDeathController)asrob::LaserTowerOfDeathController
moveForward(double value) overrideasrob::LaserTowerOfDeathControllervirtual
open(yarp::os::Searchable &config) override (defined in asrob::LaserTowerOfDeathController)asrob::LaserTowerOfDeathController
panJointValue (defined in asrob::LaserTowerOfDeathController)asrob::LaserTowerOfDeathControllerprivate
panLeft(double value) overrideasrob::LaserTowerOfDeathControllervirtual
sendCurrentJointValues() (defined in asrob::LaserTowerOfDeathController)asrob::LaserTowerOfDeathControllerprivate
serial (defined in asrob::LaserTowerOfDeathController)asrob::LaserTowerOfDeathControllerprivate
serialDevice (defined in asrob::LaserTowerOfDeathController)asrob::LaserTowerOfDeathControllerprivate
stopCameraMovement() overrideasrob::LaserTowerOfDeathControllervirtual
stopMovement() overrideasrob::LaserTowerOfDeathControllervirtual
tiltDown(double value) overrideasrob::LaserTowerOfDeathControllervirtual
tiltJointValue (defined in asrob::LaserTowerOfDeathController)asrob::LaserTowerOfDeathControllerprivate
turnLeft(double value) overrideasrob::LaserTowerOfDeathControllervirtual
~IRobotManager()=default (defined in asrob::IRobotManager)asrob::IRobotManagervirtual
+ + + + diff --git a/classasrob_1_1LaserTowerOfDeathController.html b/classasrob_1_1LaserTowerOfDeathController.html new file mode 100644 index 0000000..9b1e29f --- /dev/null +++ b/classasrob_1_1LaserTowerOfDeathController.html @@ -0,0 +1,167 @@ + + + + + + + +yarp-devices: asrob::LaserTowerOfDeathController Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Private Member Functions | +Private Attributes | +List of all members
+
+
asrob::LaserTowerOfDeathController Class Reference
+
+
+ +

LaserTowerOfDeathController. +

+ +

#include <LaserTowerOfDeathController.hpp>

+
+Inheritance diagram for asrob::LaserTowerOfDeathController:
+
+
+ + +asrob::IRobotManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool moveForward (double value) override
 Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
 
+bool turnLeft (double value) override
 Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
 
+bool stopMovement () override
 Robot: Stop movement.
 
+bool tiltDown (double value) override
 Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
 
+bool panLeft (double value) override
 Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s].
 
+bool stopCameraMovement () override
 Robot camera: Stop movement.
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
+ + + + + +

+Private Member Functions

+bool sendCurrentJointValues ()
 
+bool checkConnection ()
 
+ + + + + + + + + +

+Private Attributes

+yarp::dev::PolyDriver serialDevice
 
+yarp::dev::ISerialDevice * serial
 
+int panJointValue {90}
 
+int tiltJointValue {90}
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classasrob_1_1LaserTowerOfDeathController.png b/classasrob_1_1LaserTowerOfDeathController.png new file mode 100644 index 0000000..5ac1ae9 Binary files /dev/null and b/classasrob_1_1LaserTowerOfDeathController.png differ diff --git a/classasrob_1_1RaspiOnePwmMotorController-members.html b/classasrob_1_1RaspiOnePwmMotorController-members.html new file mode 100644 index 0000000..35b8a4d --- /dev/null +++ b/classasrob_1_1RaspiOnePwmMotorController-members.html @@ -0,0 +1,99 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
asrob::RaspiOnePwmMotorController Member List
+
+
+ +

This is the complete list of members for asrob::RaspiOnePwmMotorController, including all inherited members.

+ + + + + + + + + + + + +
close() override (defined in asrob::RaspiOnePwmMotorController)asrob::RaspiOnePwmMotorController
gpios (defined in asrob::RaspiOnePwmMotorController)asrob::RaspiOnePwmMotorControllerprivate
indexWithinRange(const int &idx)asrob::RaspiOnePwmMotorControllerprivate
moveForward(double value) overrideasrob::RaspiOnePwmMotorControllervirtual
open(yarp::os::Searchable &config) override (defined in asrob::RaspiOnePwmMotorController)asrob::RaspiOnePwmMotorController
panLeft(double value) overrideasrob::RaspiOnePwmMotorControllervirtual
stopCameraMovement() overrideasrob::RaspiOnePwmMotorControllervirtual
stopMovement() overrideasrob::RaspiOnePwmMotorControllervirtual
tiltDown(double value) overrideasrob::RaspiOnePwmMotorControllervirtual
turnLeft(double value) overrideasrob::RaspiOnePwmMotorControllervirtual
~IRobotManager()=default (defined in asrob::IRobotManager)asrob::IRobotManagervirtual
+ + + + diff --git a/classasrob_1_1RaspiOnePwmMotorController.html b/classasrob_1_1RaspiOnePwmMotorController.html new file mode 100644 index 0000000..940b58f --- /dev/null +++ b/classasrob_1_1RaspiOnePwmMotorController.html @@ -0,0 +1,188 @@ + + + + + + + +yarp-devices: asrob::RaspiOnePwmMotorController Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Private Member Functions | +Private Attributes | +List of all members
+
+
asrob::RaspiOnePwmMotorController Class Reference
+
+
+ +

RaspiOnePwmMotorController. +

+ +

#include <RaspiOnePwmMotorController.hpp>

+
+Inheritance diagram for asrob::RaspiOnePwmMotorController:
+
+
+ + +asrob::IRobotManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool moveForward (double value) override
 Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
 
+bool turnLeft (double value) override
 Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
 
+bool stopMovement () override
 Robot: Stop movement.
 
+bool tiltDown (double value) override
 Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
 
+bool panLeft (double value) override
 Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s].
 
+bool stopCameraMovement () override
 Robot camera: Stop movement.
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
+ + + +

+Private Member Functions

bool indexWithinRange (const int &idx)
 
+ + + +

+Private Attributes

+std::vector< int > gpios
 
+

Member Function Documentation

+ +

◆ indexWithinRange()

+ +
+
+ + + + + +
+ + + + + + + + +
bool RaspiOnePwmMotorController::indexWithinRange (const int & idx)
+
+private
+
+

Check if index is within range (referred to driver vector size).

Parameters
+ + +
idxindex to check.
+
+
+
Returns
true/false on success/failure.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classasrob_1_1RaspiOnePwmMotorController.png b/classasrob_1_1RaspiOnePwmMotorController.png new file mode 100644 index 0000000..a4e3475 Binary files /dev/null and b/classasrob_1_1RaspiOnePwmMotorController.png differ diff --git a/classasrob_1_1RaspiTwoPwmMotorController-members.html b/classasrob_1_1RaspiTwoPwmMotorController-members.html new file mode 100644 index 0000000..3c78d6b --- /dev/null +++ b/classasrob_1_1RaspiTwoPwmMotorController-members.html @@ -0,0 +1,103 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
asrob::RaspiTwoPwmMotorController Member List
+
+
+ +

This is the complete list of members for asrob::RaspiTwoPwmMotorController, including all inherited members.

+ + + + + + + + + + + + + + + + +
close() override (defined in asrob::RaspiTwoPwmMotorController)asrob::RaspiTwoPwmMotorController
gpios (defined in asrob::RaspiTwoPwmMotorController)asrob::RaspiTwoPwmMotorControllerprivate
indexWithinRange(const int &idx)asrob::RaspiTwoPwmMotorControllerprivate
LEFT_MOTOR_IN1 (defined in asrob::RaspiTwoPwmMotorController)asrob::RaspiTwoPwmMotorControllerprivatestatic
LEFT_MOTOR_IN2 (defined in asrob::RaspiTwoPwmMotorController)asrob::RaspiTwoPwmMotorControllerprivatestatic
moveForward(double value) overrideasrob::RaspiTwoPwmMotorControllervirtual
open(yarp::os::Searchable &config) override (defined in asrob::RaspiTwoPwmMotorController)asrob::RaspiTwoPwmMotorController
panLeft(double value) overrideasrob::RaspiTwoPwmMotorControllervirtual
RIGHT_MOTOR_IN1 (defined in asrob::RaspiTwoPwmMotorController)asrob::RaspiTwoPwmMotorControllerprivatestatic
RIGHT_MOTOR_IN2 (defined in asrob::RaspiTwoPwmMotorController)asrob::RaspiTwoPwmMotorControllerprivatestatic
stopCameraMovement() overrideasrob::RaspiTwoPwmMotorControllervirtual
stopMovement() overrideasrob::RaspiTwoPwmMotorControllervirtual
tiltDown(double value) overrideasrob::RaspiTwoPwmMotorControllervirtual
turnLeft(double value) overrideasrob::RaspiTwoPwmMotorControllervirtual
~IRobotManager()=default (defined in asrob::IRobotManager)asrob::IRobotManagervirtual
+ + + + diff --git a/classasrob_1_1RaspiTwoPwmMotorController.html b/classasrob_1_1RaspiTwoPwmMotorController.html new file mode 100644 index 0000000..700e1a5 --- /dev/null +++ b/classasrob_1_1RaspiTwoPwmMotorController.html @@ -0,0 +1,204 @@ + + + + + + + +yarp-devices: asrob::RaspiTwoPwmMotorController Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Private Member Functions | +Private Attributes | +Static Private Attributes | +List of all members
+
+
asrob::RaspiTwoPwmMotorController Class Reference
+
+
+ +

RaspiTwoPwmMotorController. +

+ +

#include <RaspiTwoPwmMotorController.hpp>

+
+Inheritance diagram for asrob::RaspiTwoPwmMotorController:
+
+
+ + +asrob::IRobotManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool moveForward (double value) override
 Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
 
+bool turnLeft (double value) override
 Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
 
+bool stopMovement () override
 Robot: Stop movement.
 
+bool tiltDown (double value) override
 Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
 
+bool panLeft (double value) override
 Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s].
 
+bool stopCameraMovement () override
 Robot camera: Stop movement.
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
+ + + +

+Private Member Functions

bool indexWithinRange (const int &idx)
 
+ + + +

+Private Attributes

+std::vector< int > gpios
 
+ + + + + + + + + +

+Static Private Attributes

+static const int LEFT_MOTOR_IN1 = 24
 
+static const int LEFT_MOTOR_IN2 = 23
 
+static const int RIGHT_MOTOR_IN1 = 22
 
+static const int RIGHT_MOTOR_IN2 = 21
 
+

Member Function Documentation

+ +

◆ indexWithinRange()

+ +
+
+ + + + + +
+ + + + + + + + +
bool RaspiTwoPwmMotorController::indexWithinRange (const int & idx)
+
+private
+
+

Check if index is within range (referred to driver vector size).

Parameters
+ + +
idxindex to check.
+
+
+
Returns
true/false on success/failure.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classasrob_1_1RaspiTwoPwmMotorController.png b/classasrob_1_1RaspiTwoPwmMotorController.png new file mode 100644 index 0000000..44b8253 Binary files /dev/null and b/classasrob_1_1RaspiTwoPwmMotorController.png differ diff --git a/classasrob_1_1RobotClient-members.html b/classasrob_1_1RobotClient-members.html new file mode 100644 index 0000000..b5d41f2 --- /dev/null +++ b/classasrob_1_1RobotClient-members.html @@ -0,0 +1,100 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
asrob::RobotClient Member List
+
+
+ +

This is the complete list of members for asrob::RobotClient, including all inherited members.

+ + + + + + + + + + + + + +
close() override (defined in asrob::RobotClient)asrob::RobotClient
moveForward(double value) overrideasrob::RobotClientvirtual
open(yarp::os::Searchable &config) override (defined in asrob::RobotClient)asrob::RobotClient
panLeft(double value) overrideasrob::RobotClientvirtual
rpcClient (defined in asrob::RobotClient)asrob::RobotClientprivate
send1vocab(int vocab) (defined in asrob::RobotClient)asrob::RobotClientprivate
send1vocab1double(int vocab, double value) (defined in asrob::RobotClient)asrob::RobotClientprivate
stopCameraMovement() overrideasrob::RobotClientvirtual
stopMovement() overrideasrob::RobotClientvirtual
tiltDown(double value) overrideasrob::RobotClientvirtual
turnLeft(double value) overrideasrob::RobotClientvirtual
~IRobotManager()=default (defined in asrob::IRobotManager)asrob::IRobotManagervirtual
+ + + + diff --git a/classasrob_1_1RobotClient.html b/classasrob_1_1RobotClient.html new file mode 100644 index 0000000..80947e4 --- /dev/null +++ b/classasrob_1_1RobotClient.html @@ -0,0 +1,158 @@ + + + + + + + +yarp-devices: asrob::RobotClient Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Private Member Functions | +Private Attributes | +List of all members
+
+
asrob::RobotClient Class Reference
+
+
+ +

RobotClient. +

+ +

#include <RobotClient.hpp>

+
+Inheritance diagram for asrob::RobotClient:
+
+
+ + +asrob::IRobotManager + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
+bool moveForward (double value) override
 Robot: Move forward (use negative value for move backward). position mode [m]. Velocity mode [m/s].
 
+bool turnLeft (double value) override
 Robot: Turn left (use negative value for turn left). position mode [deg]. Velocity mode [deg/s].
 
+bool stopMovement () override
 Robot: Stop movement.
 
+bool tiltDown (double value) override
 Robot camera: Tilt down (use negative value for tilt up). position mode [deg]. Velocity mode [deg/s].
 
+bool panLeft (double value) override
 Robot camera: Pan left (use negative value for pan right). position mode [deg]. Velocity mode [deg/s].
 
+bool stopCameraMovement () override
 Robot camera: Stop movement.
 
+ + + + + +

+Private Member Functions

+bool send1vocab1double (int vocab, double value)
 
+bool send1vocab (int vocab)
 
+ + + +

+Private Attributes

+yarp::os::RpcClient rpcClient
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classasrob_1_1RobotClient.png b/classasrob_1_1RobotClient.png new file mode 100644 index 0000000..87132bf Binary files /dev/null and b/classasrob_1_1RobotClient.png differ diff --git a/classasrob_1_1RobotServer-members.html b/classasrob_1_1RobotServer-members.html new file mode 100644 index 0000000..4d27094 --- /dev/null +++ b/classasrob_1_1RobotServer-members.html @@ -0,0 +1,94 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
asrob::RobotServer Member List
+
+
+ +

This is the complete list of members for asrob::RobotServer, including all inherited members.

+ + + + + + + +
close() override (defined in asrob::RobotServer)asrob::RobotServer
iRobotManager (defined in asrob::RobotServer)asrob::RobotServerprivate
open(yarp::os::Searchable &config) override (defined in asrob::RobotServer)asrob::RobotServer
read(yarp::os::ConnectionReader &connection) override (defined in asrob::RobotServer)asrob::RobotServer
robotDevice (defined in asrob::RobotServer)asrob::RobotServerprivate
rpcServer (defined in asrob::RobotServer)asrob::RobotServerprivate
+ + + + diff --git a/classasrob_1_1RobotServer.html b/classasrob_1_1RobotServer.html new file mode 100644 index 0000000..7cece64 --- /dev/null +++ b/classasrob_1_1RobotServer.html @@ -0,0 +1,130 @@ + + + + + + + +yarp-devices: asrob::RobotServer Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Private Attributes | +List of all members
+
+
asrob::RobotServer Class Reference
+
+
+ +

RobotServer. +

+ +

#include <RobotServer.hpp>

+
+Inheritance diagram for asrob::RobotServer:
+
+
+ +
+ + + + + + + + +

+Public Member Functions

+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
+bool read (yarp::os::ConnectionReader &connection) override
 
+ + + + + + + +

+Private Attributes

+yarp::os::RpcServer rpcServer
 
+yarp::dev::PolyDriver robotDevice
 
+IRobotManageriRobotManager
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classasrob_1_1RobotServer.png b/classasrob_1_1RobotServer.png new file mode 100644 index 0000000..f4c18c6 Binary files /dev/null and b/classasrob_1_1RobotServer.png differ diff --git a/classes.html b/classes.html new file mode 100644 index 0000000..b91b558 --- /dev/null +++ b/classes.html @@ -0,0 +1,105 @@ + + + + + + + +yarp-devices: Class Index + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
C | D | E | F | I | L | R
+
+
+
C
+
channel
+
+
D
+
dma_cb_t
+
+
E
+
EcroPwmController (asrob)
EcroWheelController (asrob)
+
+
F
+
FakeMotorController (asrob)
+
+
I
+
IRobotManager (asrob)
+
+
L
+
LaserTowerOfDeathController (asrob)
+
+
R
+
RaspiOnePwmMotorController (asrob)
RaspiTwoPwmMotorController (asrob)
Robot (RobotPy)
RobotClient (asrob)
RobotServer (asrob)
+
+
+ + + + 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/dir_3bb89c900400717501ccff31d9189399.html b/dir_3bb89c900400717501ccff31d9189399.html new file mode 100644 index 0000000..8e0605b --- /dev/null +++ b/dir_3bb89c900400717501ccff31d9189399.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: examples/matlab Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matlab Directory Reference
+
+
+
+ + + + diff --git a/dir_42950ad3e062fd69313a6bd36855dcce.html b/dir_42950ad3e062fd69313a6bd36855dcce.html new file mode 100644 index 0000000..52282be --- /dev/null +++ b/dir_42950ad3e062fd69313a6bd36855dcce.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/EcroPwmController Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
EcroPwmController Directory Reference
+
+
+
+ + + + diff --git a/dir_519a1276aa89a8145950b617d844d189.html b/dir_519a1276aa89a8145950b617d844d189.html new file mode 100644 index 0000000..3295dd8 --- /dev/null +++ b/dir_519a1276aa89a8145950b617d844d189.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: examples/cpp/exampleRobotClient Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
exampleRobotClient Directory Reference
+
+
+
+ + + + diff --git a/dir_70a30ac1a90abd159b6a503e4b49cd79.html b/dir_70a30ac1a90abd159b6a503e4b49cd79.html new file mode 100644 index 0000000..8dca573 --- /dev/null +++ b/dir_70a30ac1a90abd159b6a503e4b49cd79.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: examples/python/simple Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
simple Directory Reference
+
+
+
+ + + + diff --git a/dir_7812be98e96dd641e444e9355f0ac13a.html b/dir_7812be98e96dd641e444e9355f0ac13a.html new file mode 100644 index 0000000..a21c429 --- /dev/null +++ b/dir_7812be98e96dd641e444e9355f0ac13a.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RobotClient Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RobotClient Directory Reference
+
+
+
+ + + + diff --git a/dir_7e6f7f084ac2fdbb681245a4671ec54f.html b/dir_7e6f7f084ac2fdbb681245a4671ec54f.html new file mode 100644 index 0000000..9ab5fdc --- /dev/null +++ b/dir_7e6f7f084ac2fdbb681245a4671ec54f.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RobotServer Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RobotServer Directory Reference
+
+
+
+ + + + diff --git a/dir_8976e5d03119516083eaca3ddca61311.html b/dir_8976e5d03119516083eaca3ddca61311.html new file mode 100644 index 0000000..5259f46 --- /dev/null +++ b/dir_8976e5d03119516083eaca3ddca61311.html @@ -0,0 +1,89 @@ + + + + + + + +yarp-devices: examples/cpp Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cpp Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/dir_a1a0d9f4b7bb423803a133c5c7f74fe7.html b/dir_a1a0d9f4b7bb423803a133c5c7f74fe7.html new file mode 100644 index 0000000..e66c336 --- /dev/null +++ b/dir_a1a0d9f4b7bb423803a133c5c7f74fe7.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/EcroWheelController Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
EcroWheelController Directory Reference
+
+
+
+ + + + diff --git a/dir_a52c22a8b79e169194d9c4bbc7c46367.html b/dir_a52c22a8b79e169194d9c4bbc7c46367.html new file mode 100644 index 0000000..f975531 --- /dev/null +++ b/dir_a52c22a8b79e169194d9c4bbc7c46367.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: doc/build Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
build Directory Reference
+
+
+
+ + + + diff --git a/dir_aef3a60a7dfcacfdd3584588a1e47516.html b/dir_aef3a60a7dfcacfdd3584588a1e47516.html new file mode 100644 index 0000000..e6cbe6d --- /dev/null +++ b/dir_aef3a60a7dfcacfdd3584588a1e47516.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RaspiTwoPwmMotorController Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RaspiTwoPwmMotorController Directory Reference
+
+
+
+ + + + diff --git a/dir_b699cc7574ccf41bf6ae62fe86f6f714.html b/dir_b699cc7574ccf41bf6ae62fe86f6f714.html new file mode 100644 index 0000000..79fee3d --- /dev/null +++ b/dir_b699cc7574ccf41bf6ae62fe86f6f714.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/FakeMotorController Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
FakeMotorController Directory Reference
+
+
+
+ + + + diff --git a/dir_bc0718b08fb2015b8e59c47b2805f60c.html b/dir_bc0718b08fb2015b8e59c47b2805f60c.html new file mode 100644 index 0000000..7b60f15 --- /dev/null +++ b/dir_bc0718b08fb2015b8e59c47b2805f60c.html @@ -0,0 +1,89 @@ + + + + + + + +yarp-devices: libraries Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
libraries Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/dir_ca7ec62bdf2659023456a44edaa57035.html b/dir_ca7ec62bdf2659023456a44edaa57035.html new file mode 100644 index 0000000..bfbd9ce --- /dev/null +++ b/dir_ca7ec62bdf2659023456a44edaa57035.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RaspiOnePwmMotorController Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RaspiOnePwmMotorController Directory Reference
+
+
+
+ + + + diff --git a/dir_d050070cc3e4bbd91d897ff8856046e0.html b/dir_d050070cc3e4bbd91d897ff8856046e0.html new file mode 100644 index 0000000..d5a7fd2 --- /dev/null +++ b/dir_d050070cc3e4bbd91d897ff8856046e0.html @@ -0,0 +1,89 @@ + + + + + + + +yarp-devices: examples/python Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
python Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/dir_d28a4824dc47e487b107a5db32ef43c4.html b/dir_d28a4824dc47e487b107a5db32ef43c4.html new file mode 100644 index 0000000..e452cd6 --- /dev/null +++ b/dir_d28a4824dc47e487b107a5db32ef43c4.html @@ -0,0 +1,91 @@ + + + + + + + +yarp-devices: examples Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
examples Directory Reference
+
+
+ + + + +

+Directories

directory  cpp
 
+
+ + + + diff --git a/dir_e08f7038a11a903b326f4d6bfb17a7cc.html b/dir_e08f7038a11a903b326f4d6bfb17a7cc.html new file mode 100644 index 0000000..6f51c7d --- /dev/null +++ b/dir_e08f7038a11a903b326f4d6bfb17a7cc.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/LaserTowerOfDeathController Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LaserTowerOfDeathController Directory Reference
+
+
+
+ + + + diff --git a/dir_e68e8157741866f444e17edd764ebbae.html b/dir_e68e8157741866f444e17edd764ebbae.html new file mode 100644 index 0000000..cfb412b --- /dev/null +++ b/dir_e68e8157741866f444e17edd764ebbae.html @@ -0,0 +1,85 @@ + + + + + + + +yarp-devices: doc Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
doc Directory Reference
+
+
+
+ + + + diff --git a/dir_f98f57c538677273d6e3d52c55355c28.html b/dir_f98f57c538677273d6e3d52c55355c28.html new file mode 100644 index 0000000..2f46c65 --- /dev/null +++ b/dir_f98f57c538677273d6e3d52c55355c28.html @@ -0,0 +1,89 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
YarpPlugins Directory Reference
+
+
+ + +

+Directories

+
+ + + + 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..ffbff02 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +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, th p.intertd, th 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.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.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; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + 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; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.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.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.svg b/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @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 + + + + + + +yarp-devices: File List + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  libraries
  YarpPlugins
  EcroPwmController
 EcroPwmController.hpp
 LogComponent.hpp
  EcroWheelController
 EcroWheelController.hpp
 LogComponent.hpp
  FakeMotorController
 FakeMotorController.hpp
 LogComponent.hpp
  LaserTowerOfDeathController
 LaserTowerOfDeathController.hpp
 LogComponent.hpp
  RaspiOnePwmMotorController
 LogComponent.hpp
 mailbox.h
 pwm.h
 RaspiOnePwmMotorController.hpp
  RaspiTwoPwmMotorController
 LogComponent.hpp
 RaspiTwoPwmMotorController.hpp
  RobotClient
 LogComponent.hpp
 RobotClient.hpp
  RobotServer
 LogComponent.hpp
 RobotServer.hpp
 IRobotManager.hpp
+
+
+ + + + 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..0b90a90 --- /dev/null +++ b/functions.html @@ -0,0 +1,161 @@ + + + + + + + +yarp-devices: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+ + +

- m -

+ + +

- p -

+ + +

- s -

+ + +

- t -

+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 0000000..1e26b01 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,161 @@ + + + + + + + +yarp-devices: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+ + +

- m -

+ + +

- p -

+ + +

- s -

+ + +

- t -

+
+ + + + diff --git a/group__YarpPlugins.html b/group__YarpPlugins.html new file mode 100644 index 0000000..cfc04e6 --- /dev/null +++ b/group__YarpPlugins.html @@ -0,0 +1,116 @@ + + + + + + + +yarp-devices: YarpPlugins + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ + +
+
+ +

Contains libraries that implement YARP device interfaces and therefore can be invoked as YARP plugins. +More...

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

+Classes

class  asrob::EcroPwmController
 EcroPwmController. More...
 
class  asrob::EcroWheelController
 EcroWheelController. More...
 
class  asrob::FakeMotorController
 FakeMotorController. More...
 
class  asrob::LaserTowerOfDeathController
 LaserTowerOfDeathController. More...
 
class  asrob::RaspiOnePwmMotorController
 RaspiOnePwmMotorController. More...
 
class  asrob::RaspiTwoPwmMotorController
 RaspiTwoPwmMotorController. More...
 
class  asrob::RobotClient
 RobotClient. More...
 
class  asrob::RobotServer
 RobotServer. More...
 
+

Detailed Description

+

Base class for Robot Managers. Original copy of this file at https://github.com/asrob-uc3m/yarp-devices/blob/develop/libraries/YarpPlugins/IRobotManager.hpp.

+
+ + + + diff --git a/group__yarp__devices__applications.html b/group__yarp__devices__applications.html new file mode 100644 index 0000000..e56f61f --- /dev/null +++ b/group__yarp__devices__applications.html @@ -0,0 +1,84 @@ + + + + + + + +yarp-devices: asrob-uc3m/yarp-devices Applications (Collections of Programs) + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
asrob-uc3m/yarp-devices Applications (Collections of Programs)
+
+
+ +

yarp-devices applications (collections of programs). +

+
+ + + + diff --git a/group__yarp__devices__examples.html b/group__yarp__devices__examples.html new file mode 100644 index 0000000..6af347d --- /dev/null +++ b/group__yarp__devices__examples.html @@ -0,0 +1,95 @@ + + + + + + + +yarp-devices: asrob-uc3m/yarp-devices Examples + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
asrob-uc3m/yarp-devices Examples
+
+
+ +

yarp-devices examples. +More...

+ + + + + + +

+Modules

 asrob-uc3m/yarp-devices C++ examples
 
 asrob-uc3m/yarp-devices Python examples
 
+

Detailed Description

+
+ + + + diff --git a/group__yarp__devices__examples__cpp.html b/group__yarp__devices__examples__cpp.html new file mode 100644 index 0000000..9d40f03 --- /dev/null +++ b/group__yarp__devices__examples__cpp.html @@ -0,0 +1,81 @@ + + + + + + + +yarp-devices: asrob-uc3m/yarp-devices C++ examples + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
asrob-uc3m/yarp-devices C++ examples
+
+
+
+ + + + diff --git a/group__yarp__devices__examples__py.html b/group__yarp__devices__examples__py.html new file mode 100644 index 0000000..e0ce715 --- /dev/null +++ b/group__yarp__devices__examples__py.html @@ -0,0 +1,81 @@ + + + + + + + +yarp-devices: asrob-uc3m/yarp-devices Python examples + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
asrob-uc3m/yarp-devices Python examples
+
+
+
+ + + + diff --git a/group__yarp__devices__firmware.html b/group__yarp__devices__firmware.html new file mode 100644 index 0000000..0f6aaf9 --- /dev/null +++ b/group__yarp__devices__firmware.html @@ -0,0 +1,84 @@ + + + + + + + +yarp-devices: asrob-uc3m/yarp-devices Firmware + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
asrob-uc3m/yarp-devices Firmware
+
+
+ +

yarp-devices firmware. +

+
+ + + + diff --git a/group__yarp__devices__libraries.html b/group__yarp__devices__libraries.html new file mode 100644 index 0000000..db32d37 --- /dev/null +++ b/group__yarp__devices__libraries.html @@ -0,0 +1,94 @@ + + + + + + + +yarp-devices: asrob-uc3m/yarp-devices Libraries + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
asrob-uc3m/yarp-devices Libraries
+
+
+ +

yarp-devices libraries. +More...

+ + + + + +

+Modules

 YarpPlugins
 Contains libraries that implement YARP device interfaces and therefore can be invoked as YARP plugins.
 
+

Detailed Description

+
+ + + + diff --git a/group__yarp__devices__programs.html b/group__yarp__devices__programs.html new file mode 100644 index 0000000..0f25018 --- /dev/null +++ b/group__yarp__devices__programs.html @@ -0,0 +1,84 @@ + + + + + + + +yarp-devices: asrob-uc3m/yarp-devices Programs + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
asrob-uc3m/yarp-devices Programs
+
+
+ +

yarp-devices programs. +

+
+ + + + diff --git a/group__yarp__devices__tests.html b/group__yarp__devices__tests.html new file mode 100644 index 0000000..87452ef --- /dev/null +++ b/group__yarp__devices__tests.html @@ -0,0 +1,84 @@ + + + + + + + +yarp-devices: asrob-uc3m/yarp-devices Tests + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
asrob-uc3m/yarp-devices Tests
+
+
+ +

yarp-devices tests. +

+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..a680062 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,108 @@ + + + + + + + +yarp-devices: Class Hierarchy + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..7b2d0ef --- /dev/null +++ b/index.html @@ -0,0 +1,114 @@ + + + + + + + +yarp-devices: Main Page + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
yarp-devices Documentation
+
+
+

Yarp-devices Homepage Latest Release

+

A place for YARP devices.

+

Link to Doxygen generated documentation: https://asrob.uc3m.es/yarp-devices

+

+Installation

+

Installation instructions for installing from source can be found here.

+

+Usage

+

Usage instructions for the different devices contained in this repository can be found here.

+

+Contributing

+

+Posting Issues

+
    +
  1. Read CONTRIBUTING.md
  2. +
  3. Post an issue / Feature request / Specific documentation request
  4. +
+

+Fork & Pull Request

+
    +
  1. Fork the repository
  2. +
  3. Create your feature branch (git checkout -b my-new-feature) off the master branch, following the Forking Git workflow
  4. +
  5. Commit your changes
  6. +
  7. Push to the branch (git push origin my-new-feature)
  8. +
  9. Create a new Pull Request
  10. +
+

+Status

+

Build Status (Linux)

+

Build Status (Windows)

+

Coverage Status

+

Issues

+
+
+ + + + 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/mailbox_8h_source.html b/mailbox_8h_source.html new file mode 100644 index 0000000..a991ca5 --- /dev/null +++ b/mailbox_8h_source.html @@ -0,0 +1,132 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RaspiOnePwmMotorController/mailbox.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mailbox.h
+
+
+
1 /*
+
2 Copyright (c) 2012, Broadcom Europe Ltd.
+
3 All rights reserved.
+
4 
+
5 Redistribution and use in source and binary forms, with or without
+
6 modification, are permitted provided that the following conditions are met:
+
7  * Redistributions of source code must retain the above copyright
+
8  notice, this list of conditions and the following disclaimer.
+
9  * Redistributions in binary form must reproduce the above copyright
+
10  notice, this list of conditions and the following disclaimer in the
+
11  documentation and/or other materials provided with the distribution.
+
12  * Neither the name of the copyright holder nor the
+
13  names of its contributors may be used to endorse or promote products
+
14  derived from this software without specific prior written permission.
+
15 
+
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26 */
+
27 
+
28 #include <linux/ioctl.h>
+
29 
+
30 #define MAJOR_NUM 100
+
31 #define IOCTL_MBOX_PROPERTY _IOWR(MAJOR_NUM, 0, char *)
+
32 #define DEVICE_FILE_NAME "/dev/vcio"
+
33 
+
34 int mbox_open(void);
+
35 void mbox_close(int file_desc);
+
36 
+
37 unsigned get_version(int file_desc);
+
38 unsigned mem_alloc(int file_desc, unsigned size, unsigned align, unsigned flags);
+
39 unsigned mem_free(int file_desc, unsigned handle);
+
40 unsigned mem_lock(int file_desc, unsigned handle);
+
41 unsigned mem_unlock(int file_desc, unsigned handle);
+
42 void *mapmem(unsigned base, unsigned size);
+
43 void *unmapmem(void *addr, unsigned size);
+
44 
+
45 unsigned execute_code(int file_desc, unsigned code, unsigned r0, unsigned r1, unsigned r2, unsigned r3, unsigned r4, unsigned r5);
+
46 unsigned execute_qpu(int file_desc, unsigned num_qpus, unsigned control, unsigned noflush, unsigned timeout);
+
47 unsigned qpu_enable(int file_desc, unsigned enable);
+
+ + + + diff --git a/md_doc_yarp_devices_install.html b/md_doc_yarp_devices_install.html new file mode 100644 index 0000000..3ae2e4e --- /dev/null +++ b/md_doc_yarp_devices_install.html @@ -0,0 +1,124 @@ + + + + + + + +yarp-devices: Installation from Source Code + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Installation from Source Code
+
+
+

This repository stores different YARP devices for different actual devices used in different robots. This huge variability in hardware sometimes makes it complicated to track the dependencies for each device you may want to compile and install.

+

This guide aims to simplify as much as possible the process of finding out which are the dependencies you actually need to install for the devices you want to use.

+

+Common dependencies (Ubuntu)

+

Some dependencies must be installed for all the devices:

+ +

+Installation (Ubuntu)

+

Once the required dependencies have been installed, the code has to be compiled and installed. Note that you will be prompted for your password upon using sudo a couple of times:

+
cd # go home
+
mkdir -p repos && cd repos # make $HOME/repos if it doesn't exist; then, enter it
+
# WiringPi ( http://wiringpi.com/download-and-install/ ) for several RasPi devices
+
git clone https://github.com/asrob-uc3m/wiringPi # Mirror of defunct git://git.drogon.net/wiringPi
+
cd wiringPi
+
./build # May require sudo
+
# Now our repo
+
git clone https://github.com/asrob-uc3m/yarp-devices.git # Download yarp-devices software from the repository
+
mkdir -p yarp-devices/build && cd yarp-devices/build && cmake .. # Configure the yarp-devices software
+
make -j$(nproc) # Compile
+
sudo make install # Install :-)
+
sudo ldconfig
+

Remember to enable the devices you want to compile using ccmake instead of cmake.

+

+Install Bindings

+

+Install Python bindings

+

Swig is needed in order to build the python bindings. It is normally installed with

sudo apt update
+
sudo apt install swig
+
sudo apt install libpython-dev # not installed by default on clean distros
+

Note: If you are on Ubuntu Trusty (14.04), you have to install swig3.0 instead of swig

sudo apt install swig3.0
+

Make sure you have installed previously YARP and yarp-devices.

cd # go home
+
cd repos/yarp-devices/bindings
+
mkdir build && cd build && cmake .. -DCREATE_PYTHON=ON # Configure the yarp-devices software
+
make -j$(nproc) # compile
+
sudo make install; sudo ldconfig; cd # install and go home
+

+Install MATLAB bindings

+

The classical way is via Java bindings, which is similar to Python, then setting the classpath.txt and librarypath.txt files contained within MATLAB. Ref: http://wiki.icub.org/wiki/Calling_yarp_from_Matlab

+
+
+ + + + diff --git a/md_examples_python_simple_README.html b/md_examples_python_simple_README.html new file mode 100644 index 0000000..f0db771 --- /dev/null +++ b/md_examples_python_simple_README.html @@ -0,0 +1,83 @@ + + + + + + + +yarp-devices: README + + + + + + + + + + + +
+
+ + + + + + +
+
yarp-devices +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
README
+
+
+

A simple example that does not expose any YARP intrinsec.

+
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @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..d994f32 --- /dev/null +++ b/menudata.js @@ -0,0 +1,49 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @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:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"i",url:"functions.html#index_i"}, +{text:"m",url:"functions.html#index_m"}, +{text:"p",url:"functions.html#index_p"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"i",url:"functions_func.html#index_i"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/modules.html b/modules.html new file mode 100644 index 0000000..e9020e7 --- /dev/null +++ b/modules.html @@ -0,0 +1,94 @@ + + + + + + + +yarp-devices: Modules + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yarp-devices +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules
    +
    +
    +
    Here is a list of all modules:
    +
    [detail level 12]
    + + + + + + + + + +
     asrob-uc3m/yarp-devices LibrariesYarp-devices libraries
     YarpPluginsContains libraries that implement YARP device interfaces and therefore can be invoked as YARP plugins
     asrob-uc3m/yarp-devices FirmwareYarp-devices firmware
     asrob-uc3m/yarp-devices ProgramsYarp-devices programs
     asrob-uc3m/yarp-devices TestsYarp-devices tests
     asrob-uc3m/yarp-devices Applications (Collections of Programs)Yarp-devices applications (collections of programs)
     asrob-uc3m/yarp-devices ExamplesYarp-devices examples
     asrob-uc3m/yarp-devices C++ examples
     asrob-uc3m/yarp-devices Python examples
    +
    +
    + + + + diff --git a/namespaceasrob.html b/namespaceasrob.html new file mode 100644 index 0000000..10284fd --- /dev/null +++ b/namespaceasrob.html @@ -0,0 +1,116 @@ + + + + + + + +yarp-devices: asrob Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yarp-devices +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    asrob Namespace Reference
    +
    + + + + + diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 0000000..439a55b --- /dev/null +++ b/namespaces.html @@ -0,0 +1,99 @@ + + + + + + + +yarp-devices: Namespace List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yarp-devices +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    +
    + + + + 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/open.png b/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/open.png differ diff --git a/pages.html b/pages.html new file mode 100644 index 0000000..5957ce1 --- /dev/null +++ b/pages.html @@ -0,0 +1,87 @@ + + + + + + + +yarp-devices: Related Pages + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yarp-devices +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    + + + + diff --git a/pwm_8h_source.html b/pwm_8h_source.html new file mode 100644 index 0000000..91cb5b6 --- /dev/null +++ b/pwm_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +yarp-devices: libraries/YarpPlugins/RaspiOnePwmMotorController/pwm.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yarp-devices +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    pwm.h
    +
    +
    +
    1 /*
    +
    2  * This file is part of RPIO.
    +
    3  *
    +
    4  * Copyright
    +
    5  *
    +
    6  * Copyright (C) 2013 Chris Hager <chris@linuxuser.at>
    +
    7  *
    +
    8  * License
    +
    9  *
    +
    10  * This program is free software: you can redistribute it and/or modify
    +
    11  * it under the terms of the GNU Lesser General Public License as published
    +
    12  * by the Free Software Foundation, either version 3 of the License, or
    +
    13  * (at your option) any later version.
    +
    14  *
    +
    15  * This program is distributed in the hope that it will be useful,
    +
    16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  * GNU Lesser General Public License for more details at
    +
    19  * <http://www.gnu.org/licenses/lgpl-3.0-standalone.html>
    +
    20  *
    +
    21  * Documentation
    +
    22  *
    +
    23  * http://pythonhosted.org/RPIO
    +
    24  */
    +
    25 int setup(int pw_incr_us, int hw);
    +
    26 void shutdown(void);
    +
    27 void set_loglevel(int level);
    +
    28 
    +
    29 int init_channel(int channel, int subcycle_time_us);
    +
    30 int clear_channel(int channel);
    +
    31 int clear_channel_gpio(int channel, int gpio);
    +
    32 int print_channel(int channel);
    +
    33 
    +
    34 int add_channel_pulse(int channel, int gpio, int width_start, int width);
    +
    35 char* get_error_message(void);
    +
    36 void set_softfatal(int enabled);
    +
    37 
    +
    38 int is_setup(void);
    +
    39 int is_channel_initialized(int channel);
    +
    40 int get_pulse_incr_us(void);
    +
    41 int get_channel_subcycle_time_us(int channel);
    +
    42 
    +
    43 #define DELAY_VIA_PWM 0
    +
    44 #define DELAY_VIA_PCM 1
    +
    45 
    +
    46 #define LOG_LEVEL_DEBUG 0
    +
    47 #define LOG_LEVEL_ERRORS 1
    +
    48 #define LOG_LEVEL_DEFAULT LOG_LEVEL_DEBUG
    +
    49 
    +
    50 // Default subcycle time
    +
    51 #define SUBCYCLE_TIME_US_DEFAULT 20000
    +
    52 
    +
    53 // Subcycle minimum. We kept seeing no signals and strange behavior of the RPi
    +
    54 #define SUBCYCLE_TIME_US_MIN 3000
    +
    55 
    +
    56 // Default pulse-width-increment-granularity
    +
    57 #define PULSE_WIDTH_INCREMENT_GRANULARITY_US_DEFAULT 10
    +
    Definition: pwm.c:203
    +
    + + + + diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 0000000..1ec5b2d --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..6da0839 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['asrob_0',['asrob',['../namespaceasrob.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20applications_20_28collections_20of_20programs_29_1',['asrob-uc3m/yarp-devices Applications (Collections of Programs)',['../group__yarp__devices__applications.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20c_2b_2b_20examples_2',['asrob-uc3m/yarp-devices C++ examples',['../group__yarp__devices__examples__cpp.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20examples_3',['asrob-uc3m/yarp-devices Examples',['../group__yarp__devices__examples.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20firmware_4',['asrob-uc3m/yarp-devices Firmware',['../group__yarp__devices__firmware.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20libraries_5',['asrob-uc3m/yarp-devices Libraries',['../group__yarp__devices__libraries.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20programs_6',['asrob-uc3m/yarp-devices Programs',['../group__yarp__devices__programs.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20python_20examples_7',['asrob-uc3m/yarp-devices Python examples',['../group__yarp__devices__examples__py.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20tests_8',['asrob-uc3m/yarp-devices Tests',['../group__yarp__devices__tests.html',1,'']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 0000000..9f80e90 --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..fb6398f --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['channel_9',['channel',['../structchannel.html',1,'']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 0000000..02cfffc --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..2549c6a --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dma_5fcb_5ft_10',['dma_cb_t',['../structdma__cb__t.html',1,'']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 0000000..39767b8 --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..8544f06 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ecropwmcontroller_11',['EcroPwmController',['../classasrob_1_1EcroPwmController.html',1,'asrob']]], + ['ecrowheelcontroller_12',['EcroWheelController',['../classasrob_1_1EcroWheelController.html',1,'asrob']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 0000000..fc40463 --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..4900aa3 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fakemotorcontroller_13',['FakeMotorController',['../classasrob_1_1FakeMotorController.html',1,'asrob']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 0000000..9dd9344 --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..688492d --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['indexwithinrange_14',['indexWithinRange',['../classasrob_1_1RaspiOnePwmMotorController.html#a567091291ebce9ef026da757e41ae0b9',1,'asrob::RaspiOnePwmMotorController::indexWithinRange()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#abf60afc89d6600572ce385ef5f910168',1,'asrob::RaspiTwoPwmMotorController::indexWithinRange()']]], + ['installation_20from_20source_20code_15',['Installation from Source Code',['../md_doc_yarp_devices_install.html',1,'']]], + ['irobotmanager_16',['IRobotManager',['../classasrob_1_1IRobotManager.html',1,'asrob']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 0000000..f1e516d --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..b2a46eb --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lasertowerofdeathcontroller_17',['LaserTowerOfDeathController',['../classasrob_1_1LaserTowerOfDeathController.html',1,'asrob']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 0000000..8ddbf6c --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..a7b73d8 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['moveforward_18',['moveForward',['../classasrob_1_1EcroPwmController.html#a3d154c241ffce4d5711ef0a22bbc9ff8',1,'asrob::EcroPwmController::moveForward()'],['../classasrob_1_1EcroWheelController.html#ac6c6db4877533937ee5af126cbbda186',1,'asrob::EcroWheelController::moveForward()'],['../classasrob_1_1FakeMotorController.html#a334b54c84ad350dbaafbdd111537af94',1,'asrob::FakeMotorController::moveForward()'],['../classasrob_1_1IRobotManager.html#af3a063d79609fd5f4c860f9df353883a',1,'asrob::IRobotManager::moveForward()'],['../classasrob_1_1LaserTowerOfDeathController.html#a4ef67862e3754dbcd52c226084b63bba',1,'asrob::LaserTowerOfDeathController::moveForward()'],['../classasrob_1_1RaspiOnePwmMotorController.html#a66a41cfae99889d49f7f5fabccd9b509',1,'asrob::RaspiOnePwmMotorController::moveForward()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a1d7d462da404acc045dc7f097fc6a123',1,'asrob::RaspiTwoPwmMotorController::moveForward()'],['../classasrob_1_1RobotClient.html#aabea7ed1e0f2098d8745b2ce35fbfa4b',1,'asrob::RobotClient::moveForward()']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 0000000..83c55ae --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..09c76b8 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['panleft_19',['panLeft',['../classasrob_1_1EcroPwmController.html#a9e7f18941d63b71bd1efcf67a4762ef6',1,'asrob::EcroPwmController::panLeft()'],['../classasrob_1_1EcroWheelController.html#a1ab30f6826291af5702826c1646ad21e',1,'asrob::EcroWheelController::panLeft()'],['../classasrob_1_1FakeMotorController.html#a46d1c7a13e77e545bdcc4ae097d7d606',1,'asrob::FakeMotorController::panLeft()'],['../classasrob_1_1IRobotManager.html#a432733e1a7a4dc032ef130cede1ff3ee',1,'asrob::IRobotManager::panLeft()'],['../classasrob_1_1LaserTowerOfDeathController.html#ae82a8536502fc245611d532189310e2f',1,'asrob::LaserTowerOfDeathController::panLeft()'],['../classasrob_1_1RaspiOnePwmMotorController.html#afbd54acb351920e25edfc8d01c3e8dde',1,'asrob::RaspiOnePwmMotorController::panLeft()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a3aac9a1ad649bfe5e839a8ed22ea1a20',1,'asrob::RaspiTwoPwmMotorController::panLeft()'],['../classasrob_1_1RobotClient.html#a4c2d6ce6ef95da209fee0e9c1331175b',1,'asrob::RobotClient::panLeft()']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 0000000..1e263c1 --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..87b9758 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['raspionepwmmotorcontroller_20',['RaspiOnePwmMotorController',['../classasrob_1_1RaspiOnePwmMotorController.html',1,'asrob']]], + ['raspitwopwmmotorcontroller_21',['RaspiTwoPwmMotorController',['../classasrob_1_1RaspiTwoPwmMotorController.html',1,'asrob']]], + ['readme_22',['README',['../md_examples_python_simple_README.html',1,'']]], + ['robot_23',['Robot',['../classRobotPy_1_1Robot.html',1,'RobotPy']]], + ['robotclient_24',['RobotClient',['../classasrob_1_1RobotClient.html',1,'asrob']]], + ['robotserver_25',['RobotServer',['../classasrob_1_1RobotServer.html',1,'asrob']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 0000000..3a6cac1 --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..13c1998 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['stopcameramovement_26',['stopCameraMovement',['../classasrob_1_1EcroPwmController.html#abdac06d089d8a3c29521f8074018a44a',1,'asrob::EcroPwmController::stopCameraMovement()'],['../classasrob_1_1EcroWheelController.html#a7df3ab10b9fefcbbf3b6a3cfa277b329',1,'asrob::EcroWheelController::stopCameraMovement()'],['../classasrob_1_1FakeMotorController.html#a9d68881d1f2aef69a38b0bad3d9f9e27',1,'asrob::FakeMotorController::stopCameraMovement()'],['../classasrob_1_1IRobotManager.html#a6f108d93a14aee8fa81427c0f691f6f1',1,'asrob::IRobotManager::stopCameraMovement()'],['../classasrob_1_1LaserTowerOfDeathController.html#ac257c5dd41807ff6460efb7851781db1',1,'asrob::LaserTowerOfDeathController::stopCameraMovement()'],['../classasrob_1_1RaspiOnePwmMotorController.html#afa6ffcff35570501f3ed9981591532dd',1,'asrob::RaspiOnePwmMotorController::stopCameraMovement()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a09d54c8446a38cfdc767f91cd03451cd',1,'asrob::RaspiTwoPwmMotorController::stopCameraMovement()'],['../classasrob_1_1RobotClient.html#a5d7d92c010d1761478ae046060ff9bb1',1,'asrob::RobotClient::stopCameraMovement()']]], + ['stopmovement_27',['stopMovement',['../classasrob_1_1EcroPwmController.html#a4ccf4600f12c863625682fcbbeb588ec',1,'asrob::EcroPwmController::stopMovement()'],['../classasrob_1_1EcroWheelController.html#afc27e84a18b9336f02aed402eb439888',1,'asrob::EcroWheelController::stopMovement()'],['../classasrob_1_1FakeMotorController.html#aa6b224aa4812064fe9e0f8b926be3712',1,'asrob::FakeMotorController::stopMovement()'],['../classasrob_1_1IRobotManager.html#ac9de295b70c38311d1bd38e1d32e6dc6',1,'asrob::IRobotManager::stopMovement()'],['../classasrob_1_1LaserTowerOfDeathController.html#a92ab7c69d058ae73c098a7cef23810b0',1,'asrob::LaserTowerOfDeathController::stopMovement()'],['../classasrob_1_1RaspiOnePwmMotorController.html#adad2d7f576e35d21661ad15ace587569',1,'asrob::RaspiOnePwmMotorController::stopMovement()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a63e2d8c5becec2d8e79c1af26feb4df1',1,'asrob::RaspiTwoPwmMotorController::stopMovement()'],['../classasrob_1_1RobotClient.html#a502dd2ce43f1ce199c74b84b3ccd8242',1,'asrob::RobotClient::stopMovement()']]] +]; diff --git a/search/all_b.html b/search/all_b.html new file mode 100644 index 0000000..130deb4 --- /dev/null +++ b/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 0000000..8fa9bca --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tiltdown_28',['tiltDown',['../classasrob_1_1EcroPwmController.html#a3415e162098b1fd38099256c7fa33b1e',1,'asrob::EcroPwmController::tiltDown()'],['../classasrob_1_1EcroWheelController.html#a220e1510a445e9e8f72a7cded2414dad',1,'asrob::EcroWheelController::tiltDown()'],['../classasrob_1_1FakeMotorController.html#a090a499d7bf0e80a64b82905c50d27a9',1,'asrob::FakeMotorController::tiltDown()'],['../classasrob_1_1IRobotManager.html#ad9b0bfc65b7d27fb89a8a63e2d8b850b',1,'asrob::IRobotManager::tiltDown()'],['../classasrob_1_1LaserTowerOfDeathController.html#acee68431fca84c804cae20dc0993bded',1,'asrob::LaserTowerOfDeathController::tiltDown()'],['../classasrob_1_1RaspiOnePwmMotorController.html#a8f224e9fa287abf88b309b11d96fa2e3',1,'asrob::RaspiOnePwmMotorController::tiltDown()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a7c40ca67d1a5c98fdd77a010274291f6',1,'asrob::RaspiTwoPwmMotorController::tiltDown()'],['../classasrob_1_1RobotClient.html#a11f930f5a38c0c96c3f7b18c03a2fcd8',1,'asrob::RobotClient::tiltDown()']]], + ['turnleft_29',['turnLeft',['../classasrob_1_1EcroPwmController.html#ac22eadf6bb1e58369c8019e4a017cb80',1,'asrob::EcroPwmController::turnLeft()'],['../classasrob_1_1EcroWheelController.html#aee5a2f24e3d434c8797bc03566f34def',1,'asrob::EcroWheelController::turnLeft()'],['../classasrob_1_1FakeMotorController.html#abead98307a4552d8c4acb25ca9ae29c0',1,'asrob::FakeMotorController::turnLeft()'],['../classasrob_1_1IRobotManager.html#ae06ed567aa7c6119e6e45fdc2988795e',1,'asrob::IRobotManager::turnLeft()'],['../classasrob_1_1LaserTowerOfDeathController.html#a3c0b156760f289fe40e2120fde371d47',1,'asrob::LaserTowerOfDeathController::turnLeft()'],['../classasrob_1_1RaspiOnePwmMotorController.html#a2e38c2d8d33535290f3dc7412b93458b',1,'asrob::RaspiOnePwmMotorController::turnLeft()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#ae2f2aa6ef18388c9a2db2307e39667e5',1,'asrob::RaspiTwoPwmMotorController::turnLeft()'],['../classasrob_1_1RobotClient.html#ac190f5666d92c54047a9e7989395b28b',1,'asrob::RobotClient::turnLeft()']]] +]; diff --git a/search/all_c.html b/search/all_c.html new file mode 100644 index 0000000..3dd5af0 --- /dev/null +++ b/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 0000000..3752ea2 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yarpplugins_30',['YarpPlugins',['../group__YarpPlugins.html',1,'']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 0000000..af8159e --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..1be24aa --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['channel_31',['channel',['../structchannel.html',1,'']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 0000000..576e916 --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..0cfe73f --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dma_5fcb_5ft_32',['dma_cb_t',['../structdma__cb__t.html',1,'']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 0000000..956405e --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..a72adff --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ecropwmcontroller_33',['EcroPwmController',['../classasrob_1_1EcroPwmController.html',1,'asrob']]], + ['ecrowheelcontroller_34',['EcroWheelController',['../classasrob_1_1EcroWheelController.html',1,'asrob']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 0000000..d33343b --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..d414664 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fakemotorcontroller_35',['FakeMotorController',['../classasrob_1_1FakeMotorController.html',1,'asrob']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 0000000..8430b07 --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 0000000..a434503 --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['irobotmanager_36',['IRobotManager',['../classasrob_1_1IRobotManager.html',1,'asrob']]] +]; diff --git a/search/classes_5.html b/search/classes_5.html new file mode 100644 index 0000000..c2f1b76 --- /dev/null +++ b/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 0000000..1f469f9 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lasertowerofdeathcontroller_37',['LaserTowerOfDeathController',['../classasrob_1_1LaserTowerOfDeathController.html',1,'asrob']]] +]; diff --git a/search/classes_6.html b/search/classes_6.html new file mode 100644 index 0000000..e39847c --- /dev/null +++ b/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 0000000..32aa5b1 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['raspionepwmmotorcontroller_38',['RaspiOnePwmMotorController',['../classasrob_1_1RaspiOnePwmMotorController.html',1,'asrob']]], + ['raspitwopwmmotorcontroller_39',['RaspiTwoPwmMotorController',['../classasrob_1_1RaspiTwoPwmMotorController.html',1,'asrob']]], + ['robot_40',['Robot',['../classRobotPy_1_1Robot.html',1,'RobotPy']]], + ['robotclient_41',['RobotClient',['../classasrob_1_1RobotClient.html',1,'asrob']]], + ['robotserver_42',['RobotServer',['../classasrob_1_1RobotServer.html',1,'asrob']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 0000000..eb4c501 --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..8e5ef62 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['indexwithinrange_44',['indexWithinRange',['../classasrob_1_1RaspiOnePwmMotorController.html#a567091291ebce9ef026da757e41ae0b9',1,'asrob::RaspiOnePwmMotorController::indexWithinRange()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#abf60afc89d6600572ce385ef5f910168',1,'asrob::RaspiTwoPwmMotorController::indexWithinRange()']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 0000000..ef4088b --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..177ae25 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['moveforward_45',['moveForward',['../classasrob_1_1EcroPwmController.html#a3d154c241ffce4d5711ef0a22bbc9ff8',1,'asrob::EcroPwmController::moveForward()'],['../classasrob_1_1EcroWheelController.html#ac6c6db4877533937ee5af126cbbda186',1,'asrob::EcroWheelController::moveForward()'],['../classasrob_1_1FakeMotorController.html#a334b54c84ad350dbaafbdd111537af94',1,'asrob::FakeMotorController::moveForward()'],['../classasrob_1_1IRobotManager.html#af3a063d79609fd5f4c860f9df353883a',1,'asrob::IRobotManager::moveForward()'],['../classasrob_1_1LaserTowerOfDeathController.html#a4ef67862e3754dbcd52c226084b63bba',1,'asrob::LaserTowerOfDeathController::moveForward()'],['../classasrob_1_1RaspiOnePwmMotorController.html#a66a41cfae99889d49f7f5fabccd9b509',1,'asrob::RaspiOnePwmMotorController::moveForward()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a1d7d462da404acc045dc7f097fc6a123',1,'asrob::RaspiTwoPwmMotorController::moveForward()'],['../classasrob_1_1RobotClient.html#aabea7ed1e0f2098d8745b2ce35fbfa4b',1,'asrob::RobotClient::moveForward()']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 0000000..ca5aa10 --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..5dd63ff --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['panleft_46',['panLeft',['../classasrob_1_1EcroPwmController.html#a9e7f18941d63b71bd1efcf67a4762ef6',1,'asrob::EcroPwmController::panLeft()'],['../classasrob_1_1EcroWheelController.html#a1ab30f6826291af5702826c1646ad21e',1,'asrob::EcroWheelController::panLeft()'],['../classasrob_1_1FakeMotorController.html#a46d1c7a13e77e545bdcc4ae097d7d606',1,'asrob::FakeMotorController::panLeft()'],['../classasrob_1_1IRobotManager.html#a432733e1a7a4dc032ef130cede1ff3ee',1,'asrob::IRobotManager::panLeft()'],['../classasrob_1_1LaserTowerOfDeathController.html#ae82a8536502fc245611d532189310e2f',1,'asrob::LaserTowerOfDeathController::panLeft()'],['../classasrob_1_1RaspiOnePwmMotorController.html#afbd54acb351920e25edfc8d01c3e8dde',1,'asrob::RaspiOnePwmMotorController::panLeft()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a3aac9a1ad649bfe5e839a8ed22ea1a20',1,'asrob::RaspiTwoPwmMotorController::panLeft()'],['../classasrob_1_1RobotClient.html#a4c2d6ce6ef95da209fee0e9c1331175b',1,'asrob::RobotClient::panLeft()']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 0000000..d79f55b --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..84322b3 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['stopcameramovement_47',['stopCameraMovement',['../classasrob_1_1EcroPwmController.html#abdac06d089d8a3c29521f8074018a44a',1,'asrob::EcroPwmController::stopCameraMovement()'],['../classasrob_1_1EcroWheelController.html#a7df3ab10b9fefcbbf3b6a3cfa277b329',1,'asrob::EcroWheelController::stopCameraMovement()'],['../classasrob_1_1FakeMotorController.html#a9d68881d1f2aef69a38b0bad3d9f9e27',1,'asrob::FakeMotorController::stopCameraMovement()'],['../classasrob_1_1IRobotManager.html#a6f108d93a14aee8fa81427c0f691f6f1',1,'asrob::IRobotManager::stopCameraMovement()'],['../classasrob_1_1LaserTowerOfDeathController.html#ac257c5dd41807ff6460efb7851781db1',1,'asrob::LaserTowerOfDeathController::stopCameraMovement()'],['../classasrob_1_1RaspiOnePwmMotorController.html#afa6ffcff35570501f3ed9981591532dd',1,'asrob::RaspiOnePwmMotorController::stopCameraMovement()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a09d54c8446a38cfdc767f91cd03451cd',1,'asrob::RaspiTwoPwmMotorController::stopCameraMovement()'],['../classasrob_1_1RobotClient.html#a5d7d92c010d1761478ae046060ff9bb1',1,'asrob::RobotClient::stopCameraMovement()']]], + ['stopmovement_48',['stopMovement',['../classasrob_1_1EcroPwmController.html#a4ccf4600f12c863625682fcbbeb588ec',1,'asrob::EcroPwmController::stopMovement()'],['../classasrob_1_1EcroWheelController.html#afc27e84a18b9336f02aed402eb439888',1,'asrob::EcroWheelController::stopMovement()'],['../classasrob_1_1FakeMotorController.html#aa6b224aa4812064fe9e0f8b926be3712',1,'asrob::FakeMotorController::stopMovement()'],['../classasrob_1_1IRobotManager.html#ac9de295b70c38311d1bd38e1d32e6dc6',1,'asrob::IRobotManager::stopMovement()'],['../classasrob_1_1LaserTowerOfDeathController.html#a92ab7c69d058ae73c098a7cef23810b0',1,'asrob::LaserTowerOfDeathController::stopMovement()'],['../classasrob_1_1RaspiOnePwmMotorController.html#adad2d7f576e35d21661ad15ace587569',1,'asrob::RaspiOnePwmMotorController::stopMovement()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a63e2d8c5becec2d8e79c1af26feb4df1',1,'asrob::RaspiTwoPwmMotorController::stopMovement()'],['../classasrob_1_1RobotClient.html#a502dd2ce43f1ce199c74b84b3ccd8242',1,'asrob::RobotClient::stopMovement()']]] +]; diff --git a/search/functions_4.html b/search/functions_4.html new file mode 100644 index 0000000..1657cad --- /dev/null +++ b/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 0000000..3620ea1 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tiltdown_49',['tiltDown',['../classasrob_1_1EcroPwmController.html#a3415e162098b1fd38099256c7fa33b1e',1,'asrob::EcroPwmController::tiltDown()'],['../classasrob_1_1EcroWheelController.html#a220e1510a445e9e8f72a7cded2414dad',1,'asrob::EcroWheelController::tiltDown()'],['../classasrob_1_1FakeMotorController.html#a090a499d7bf0e80a64b82905c50d27a9',1,'asrob::FakeMotorController::tiltDown()'],['../classasrob_1_1IRobotManager.html#ad9b0bfc65b7d27fb89a8a63e2d8b850b',1,'asrob::IRobotManager::tiltDown()'],['../classasrob_1_1LaserTowerOfDeathController.html#acee68431fca84c804cae20dc0993bded',1,'asrob::LaserTowerOfDeathController::tiltDown()'],['../classasrob_1_1RaspiOnePwmMotorController.html#a8f224e9fa287abf88b309b11d96fa2e3',1,'asrob::RaspiOnePwmMotorController::tiltDown()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#a7c40ca67d1a5c98fdd77a010274291f6',1,'asrob::RaspiTwoPwmMotorController::tiltDown()'],['../classasrob_1_1RobotClient.html#a11f930f5a38c0c96c3f7b18c03a2fcd8',1,'asrob::RobotClient::tiltDown()']]], + ['turnleft_50',['turnLeft',['../classasrob_1_1EcroPwmController.html#ac22eadf6bb1e58369c8019e4a017cb80',1,'asrob::EcroPwmController::turnLeft()'],['../classasrob_1_1EcroWheelController.html#aee5a2f24e3d434c8797bc03566f34def',1,'asrob::EcroWheelController::turnLeft()'],['../classasrob_1_1FakeMotorController.html#abead98307a4552d8c4acb25ca9ae29c0',1,'asrob::FakeMotorController::turnLeft()'],['../classasrob_1_1IRobotManager.html#ae06ed567aa7c6119e6e45fdc2988795e',1,'asrob::IRobotManager::turnLeft()'],['../classasrob_1_1LaserTowerOfDeathController.html#a3c0b156760f289fe40e2120fde371d47',1,'asrob::LaserTowerOfDeathController::turnLeft()'],['../classasrob_1_1RaspiOnePwmMotorController.html#a2e38c2d8d33535290f3dc7412b93458b',1,'asrob::RaspiOnePwmMotorController::turnLeft()'],['../classasrob_1_1RaspiTwoPwmMotorController.html#ae2f2aa6ef18388c9a2db2307e39667e5',1,'asrob::RaspiTwoPwmMotorController::turnLeft()'],['../classasrob_1_1RobotClient.html#ac190f5666d92c54047a9e7989395b28b',1,'asrob::RobotClient::turnLeft()']]] +]; diff --git a/search/groups_0.html b/search/groups_0.html new file mode 100644 index 0000000..c600b49 --- /dev/null +++ b/search/groups_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_0.js b/search/groups_0.js new file mode 100644 index 0000000..c1d4756 --- /dev/null +++ b/search/groups_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['asrob_2duc3m_2fyarp_2ddevices_20applications_20_28collections_20of_20programs_29_51',['asrob-uc3m/yarp-devices Applications (Collections of Programs)',['../group__yarp__devices__applications.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20c_2b_2b_20examples_52',['asrob-uc3m/yarp-devices C++ examples',['../group__yarp__devices__examples__cpp.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20examples_53',['asrob-uc3m/yarp-devices Examples',['../group__yarp__devices__examples.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20firmware_54',['asrob-uc3m/yarp-devices Firmware',['../group__yarp__devices__firmware.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20libraries_55',['asrob-uc3m/yarp-devices Libraries',['../group__yarp__devices__libraries.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20programs_56',['asrob-uc3m/yarp-devices Programs',['../group__yarp__devices__programs.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20python_20examples_57',['asrob-uc3m/yarp-devices Python examples',['../group__yarp__devices__examples__py.html',1,'']]], + ['asrob_2duc3m_2fyarp_2ddevices_20tests_58',['asrob-uc3m/yarp-devices Tests',['../group__yarp__devices__tests.html',1,'']]] +]; diff --git a/search/groups_1.html b/search/groups_1.html new file mode 100644 index 0000000..2eb3550 --- /dev/null +++ b/search/groups_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_1.js b/search/groups_1.js new file mode 100644 index 0000000..cb966ac --- /dev/null +++ b/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yarpplugins_59',['YarpPlugins',['../group__YarpPlugins.html',1,'']]] +]; diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/namespaces_0.html b/search/namespaces_0.html new file mode 100644 index 0000000..21db2c3 --- /dev/null +++ b/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 0000000..18334b1 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['asrob_43',['asrob',['../namespaceasrob.html',1,'']]] +]; diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/search/pages_0.html b/search/pages_0.html new file mode 100644 index 0000000..8517b48 --- /dev/null +++ b/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 0000000..ace737f --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['installation_20from_20source_20code_60',['Installation from Source Code',['../md_doc_yarp_devices_install.html',1,'']]] +]; diff --git a/search/pages_1.html b/search/pages_1.html new file mode 100644 index 0000000..a0fb679 --- /dev/null +++ b/search/pages_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 0000000..04d0352 --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme_61',['README',['../md_examples_python_simple_README.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..9074198 --- /dev/null +++ b/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- 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; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.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..fb226f7 --- /dev/null +++ b/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @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 + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + 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-block'; + 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.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == '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 + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yarp-devices +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    channel Member List
    +
    +
    + +

    This is the complete list of members for channel, including all inherited members.

    + + + + + + + + + + + + +
    bus_addr (defined in channel)channel
    cb (defined in channel)channel
    dma_reg (defined in channel)channel
    mem_ref (defined in channel)channel
    num_cbs (defined in channel)channel
    num_pages (defined in channel)channel
    num_samples (defined in channel)channel
    sample (defined in channel)channel
    subcycle_time_us (defined in channel)channel
    virtbase (defined in channel)channel
    width_max (defined in channel)channel
    + + + + diff --git a/structchannel.html b/structchannel.html new file mode 100644 index 0000000..92005b1 --- /dev/null +++ b/structchannel.html @@ -0,0 +1,124 @@ + + + + + + + +yarp-devices: channel Struct Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yarp-devices +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    channel Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +uint8_t * virtbase
     
    +uint32_t * sample
     
    +dma_cb_tcb
     
    +volatile uint32_t * dma_reg
     
    +unsigned mem_ref
     
    +unsigned bus_addr
     
    +uint32_t subcycle_time_us
     
    +uint32_t num_samples
     
    +uint32_t num_cbs
     
    +uint32_t num_pages
     
    +uint32_t width_max
     
    +
    The documentation for this struct was generated from the following file:
      +
    • libraries/YarpPlugins/RaspiOnePwmMotorController/pwm.c
    • +
    +
    + + + + diff --git a/structdma__cb__t-members.html b/structdma__cb__t-members.html new file mode 100644 index 0000000..04aa415 --- /dev/null +++ b/structdma__cb__t-members.html @@ -0,0 +1,91 @@ + + + + + + + +yarp-devices: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yarp-devices +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    dma_cb_t Member List
    +
    +
    + +

    This is the complete list of members for dma_cb_t, including all inherited members.

    + + + + + + + + +
    dst (defined in dma_cb_t)dma_cb_t
    info (defined in dma_cb_t)dma_cb_t
    length (defined in dma_cb_t)dma_cb_t
    next (defined in dma_cb_t)dma_cb_t
    pad (defined in dma_cb_t)dma_cb_t
    src (defined in dma_cb_t)dma_cb_t
    stride (defined in dma_cb_t)dma_cb_t
    + + + + diff --git a/structdma__cb__t.html b/structdma__cb__t.html new file mode 100644 index 0000000..3300522 --- /dev/null +++ b/structdma__cb__t.html @@ -0,0 +1,112 @@ + + + + + + + +yarp-devices: dma_cb_t Struct Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    yarp-devices +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    dma_cb_t Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Public Attributes

    +uint32_t info
     
    +uint32_t src
     
    +uint32_t dst
     
    +uint32_t length
     
    +uint32_t stride
     
    +uint32_t next
     
    +uint32_t pad [2]
     
    +
    The documentation for this struct was generated from the following file:
      +
    • libraries/YarpPlugins/RaspiOnePwmMotorController/pwm.c
    • +
    +
    + + + + 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}}