aboutsummaryrefslogtreecommitdiff
path: root/src/modules/land_detector/LandDetector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/land_detector/LandDetector.cpp')
-rw-r--r--src/modules/land_detector/LandDetector.cpp89
1 files changed, 45 insertions, 44 deletions
diff --git a/src/modules/land_detector/LandDetector.cpp b/src/modules/land_detector/LandDetector.cpp
index a39e53818..5029ce185 100644
--- a/src/modules/land_detector/LandDetector.cpp
+++ b/src/modules/land_detector/LandDetector.cpp
@@ -3,75 +3,76 @@
#include <drivers/drv_hrt.h>
LandDetector::LandDetector() :
- _landDetectedPub(-1),
- _landDetected({0, false}),
- _taskShouldExit(false),
- _taskIsRunning(false)
+ _landDetectedPub(-1),
+ _landDetected({0, false}),
+ _taskShouldExit(false),
+ _taskIsRunning(false)
{
- //Advertise the first land detected uORB
- _landDetected.timestamp = hrt_absolute_time();
- _landDetected.landed = false;
- _landDetectedPub = orb_advertise(ORB_ID(vehicle_land_detected), &_landDetected);
+ //Advertise the first land detected uORB
+ _landDetected.timestamp = hrt_absolute_time();
+ _landDetected.landed = false;
+ _landDetectedPub = orb_advertise(ORB_ID(vehicle_land_detected), &_landDetected);
}
LandDetector::~LandDetector()
{
- _taskShouldExit = true;
- close(_landDetectedPub);
+ _taskShouldExit = true;
+ close(_landDetectedPub);
}
void LandDetector::shutdown()
{
- _taskShouldExit = true;
+ _taskShouldExit = true;
}
void LandDetector::start()
{
- //Make sure this method has not already been called by another thread
- if(isRunning()) {
- return;
- }
+ //Make sure this method has not already been called by another thread
+ if (isRunning()) {
+ return;
+ }
- //Task is now running, keep doing so until shutdown() has been called
- _taskIsRunning = true;
- _taskShouldExit = false;
- while(isRunning()) {
+ //Task is now running, keep doing so until shutdown() has been called
+ _taskIsRunning = true;
+ _taskShouldExit = false;
- bool landDetected = update();
+ while (isRunning()) {
- //Publish if land detection state has changed
- if (_landDetected.landed != landDetected) {
- _landDetected.timestamp = hrt_absolute_time();
- _landDetected.landed = landDetected;
+ bool landDetected = update();
- /* publish the land detected broadcast */
- orb_publish(ORB_ID(vehicle_land_detected), _landDetectedPub, &_landDetected);
- }
+ //Publish if land detection state has changed
+ if (_landDetected.landed != landDetected) {
+ _landDetected.timestamp = hrt_absolute_time();
+ _landDetected.landed = landDetected;
- //Limit loop rate
- usleep(1000000 / LAND_DETECTOR_UPDATE_RATE);
- }
+ /* publish the land detected broadcast */
+ orb_publish(ORB_ID(vehicle_land_detected), _landDetectedPub, &_landDetected);
+ }
- _taskIsRunning = false;
- _exit(0);
+ //Limit loop rate
+ usleep(1000000 / LAND_DETECTOR_UPDATE_RATE);
+ }
+
+ _taskIsRunning = false;
+ _exit(0);
}
bool LandDetector::orb_update(const struct orb_metadata *meta, int handle, void *buffer)
{
- bool newData = false;
+ bool newData = false;
- //Check if there is new data to grab
- if (orb_check(handle, &newData) != OK) {
- return false;
- }
+ //Check if there is new data to grab
+ if (orb_check(handle, &newData) != OK) {
+ return false;
+ }
- if (!newData) {
- return false;
- }
+ if (!newData) {
+ return false;
+ }
- if (orb_copy(meta, handle, buffer) != OK) {
- return false;
- }
+ if (orb_copy(meta, handle, buffer) != OK) {
+ return false;
+ }
- return true;
+ return true;
}