AP_OpticalFlow: allow separate enable of MSP opticalflow

This commit is contained in:
Andrew Tridgell 2020-09-01 17:54:50 +10:00
parent 34430e9d6c
commit 3517ab9c45
5 changed files with 23 additions and 18 deletions

View File

@ -17,12 +17,14 @@
#include <AP_AHRS/AP_AHRS.h>
#include "AP_OpticalFlow_MSP.h"
#if HAL_MSP_ENABLED
#if HAL_MSP_OPTICALFLOW_ENABLED
#define OPTFLOW_MSP_TIMEOUT_SEC 0.5f // 2Hz
extern const AP_HAL::HAL& hal;
using namespace MSP;
// detect the device
AP_OpticalFlow_MSP *AP_OpticalFlow_MSP::detect(OpticalFlow &_frontend)
{
@ -89,7 +91,7 @@ void AP_OpticalFlow_MSP::update(void)
}
// handle OPTICAL_FLOW msp messages
void AP_OpticalFlow_MSP::handle_msp(const msp_opflow_sensor_t &pkt)
void AP_OpticalFlow_MSP::handle_msp(const MSP::msp_opflow_sensor_t &pkt)
{
// record time message was received
// ToDo: add jitter correction
@ -102,4 +104,5 @@ void AP_OpticalFlow_MSP::handle_msp(const msp_opflow_sensor_t &pkt)
count++;
}
#endif //HAL_MSP_ENABLED
#endif // HAL_MSP_OPTICALFLOW_ENABLED

View File

@ -3,7 +3,7 @@
#include "OpticalFlow.h"
#include <AP_HAL/utility/OwnPtr.h>
#if HAL_MSP_ENABLED
#if HAL_MSP_OPTICALFLOW_ENABLED
class AP_OpticalFlow_MSP : public OpticalFlow_backend
{
@ -18,7 +18,7 @@ public:
void update(void) override;
// get update from msp
void handle_msp(const msp_opflow_sensor_t &pkt) override;
void handle_msp(const MSP::msp_opflow_sensor_t &pkt) override;
// detect if the sensor is available
static AP_OpticalFlow_MSP *detect(OpticalFlow &_frontend);
@ -34,4 +34,4 @@ private:
uint16_t gyro_sum_count; // number of gyro sensor values in sum
};
#endif //HAL_MSP_ENABLED
#endif // HAL_MSP_OPTICALFLOW_ENABLED

View File

@ -137,9 +137,9 @@ void OpticalFlow::init(uint32_t log_bit)
#endif
break;
case OpticalFlowType::MSP:
#if HAL_MSP_ENABLED
#if HAL_MSP_OPTICALFLOW_ENABLED
backend = AP_OpticalFlow_MSP::detect(*this);
#endif //HAL_MSP_ENABLED
#endif
break;
case OpticalFlowType::SITL:
#if CONFIG_HAL_BOARD == HAL_BOARD_SITL
@ -179,8 +179,8 @@ void OpticalFlow::handle_msg(const mavlink_message_t &msg)
}
}
#if HAL_MSP_ENABLED
void OpticalFlow::handle_msp(const msp_opflow_sensor_t &pkt)
#if HAL_MSP_OPTICALFLOW_ENABLED
void OpticalFlow::handle_msp(const MSP::msp_opflow_sensor_t &pkt)
{
// exit immediately if not enabled
if (!enabled()) {
@ -191,7 +191,7 @@ void OpticalFlow::handle_msp(const msp_opflow_sensor_t &pkt)
backend->handle_msp(pkt);
}
}
#endif //HAL_MSP_ENABLED
#endif //HAL_MSP_OPTICALFLOW_ENABLED
void OpticalFlow::update_state(const OpticalFlow_state &state)
{

View File

@ -24,9 +24,10 @@
#include <AP_Math/AP_Math.h>
#include <GCS_MAVLink/GCS_MAVLink.h>
#if HAL_MSP_ENABLED
using namespace MSP;
#endif //HAL_MSP_ENABLED
#ifndef HAL_MSP_OPTICALFLOW_ENABLED
#define HAL_MSP_OPTICALFLOW_ENABLED HAL_MSP_ENABLED && !HAL_MINIMIZE_FEATURES
#endif
class OpticalFlow_backend;
class AP_AHRS_NavEKF;
@ -74,10 +75,10 @@ public:
// handle optical flow mavlink messages
void handle_msg(const mavlink_message_t &msg);
#if HAL_MSP_ENABLED
#if HAL_MSP_OPTICALFLOW_ENABLED
// handle optical flow msp messages
void handle_msp(const msp_opflow_sensor_t &pkt);
#endif //HAL_MSP_ENABLED
void handle_msp(const MSP::msp_opflow_sensor_t &pkt);
#endif
// quality - returns the surface quality as a measure from 0 ~ 255
uint8_t quality() const { return _state.surface_quality; }

View File

@ -38,10 +38,11 @@ public:
// handle optical flow mavlink messages
virtual void handle_msg(const mavlink_message_t &msg) {}
#if HAL_MSP_ENABLED
#if HAL_MSP_OPTICALFLOW_ENABLED
// handle optical flow msp messages
virtual void handle_msp(const MSP::msp_opflow_sensor_t &pkt) {}
#endif
protected:
// access to frontend
OpticalFlow &frontend;