From 9829a1d08bf7ed13378d65f2bfe58806b3d2ab92 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Fri, 1 Nov 2019 21:23:16 +1100 Subject: [PATCH] AP_RangeFinder: move wasp to using common serial backend --- .../AP_RangeFinder/AP_RangeFinder_Wasp.cpp | 23 ++++--------------- .../AP_RangeFinder/AP_RangeFinder_Wasp.h | 14 ++++++----- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_Wasp.cpp b/libraries/AP_RangeFinder/AP_RangeFinder_Wasp.cpp index aeaffe05f2..56d11fcd30 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_Wasp.cpp +++ b/libraries/AP_RangeFinder/AP_RangeFinder_Wasp.cpp @@ -13,9 +13,9 @@ along with this program. If not, see . */ -#include #include "AP_RangeFinder_Wasp.h" -#include + +#include #include extern const AP_HAL::HAL& hal; @@ -69,24 +69,11 @@ const AP_Param::GroupInfo AP_RangeFinder_Wasp::var_info[] = { AP_RangeFinder_Wasp::AP_RangeFinder_Wasp(RangeFinder::RangeFinder_State &_state, AP_RangeFinder_Params &_params, uint8_t serial_instance) : - AP_RangeFinder_Backend(_state, _params) { + AP_RangeFinder_Backend_Serial(_state, _params, serial_instance) +{ AP_Param::setup_object_defaults(this, var_info); - const AP_SerialManager &serial_manager = AP::serialmanager(); - uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_Rangefinder, serial_instance); - if (uart != nullptr) { - uart->begin(115200); - - // register Wasp specific parameters - state.var_info = var_info; - - configuration_state = WASP_CFG_PROTOCOL; - } -} - -// detection is considered as locating a serial port -bool AP_RangeFinder_Wasp::detect(uint8_t serial_instance) { - return AP::serialmanager().find_serial(AP_SerialManager::SerialProtocol_Rangefinder, serial_instance) != nullptr; + state.var_info = var_info; } // read - return last value measured by sensor diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_Wasp.h b/libraries/AP_RangeFinder/AP_RangeFinder_Wasp.h index 509804b40f..ac2727a825 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_Wasp.h +++ b/libraries/AP_RangeFinder/AP_RangeFinder_Wasp.h @@ -1,26 +1,29 @@ #pragma once #include "RangeFinder.h" -#include "RangeFinder_Backend.h" +#include "RangeFinder_Backend_Serial.h" // WASP 200 LRF // http://www.attolloengineering.com/wasp-200-lrf.html -class AP_RangeFinder_Wasp : public AP_RangeFinder_Backend { +class AP_RangeFinder_Wasp : public AP_RangeFinder_Backend_Serial { public: AP_RangeFinder_Wasp(RangeFinder::RangeFinder_State &_state, AP_RangeFinder_Params &_params, uint8_t serial_instance); - static bool detect(uint8_t serial_instance); - void update(void) override; static const struct AP_Param::GroupInfo var_info[]; protected: + // Wasp is always 115200 + uint32_t initial_baudrate(uint8_t serial_instance) const override { + return 115200; + } + virtual MAV_DISTANCE_SENSOR _get_mav_distance_sensor_type() const override { return MAV_DISTANCE_SENSOR_LASER; } @@ -42,13 +45,12 @@ private: WASP_CFG_DONE // done configuring }; - wasp_configuration_stage configuration_state; + wasp_configuration_stage configuration_state = WASP_CFG_PROTOCOL; bool get_reading(uint16_t &reading_cm); void parse_response(void); - AP_HAL::UARTDriver *uart; char linebuf[10]; uint8_t linebuf_len; AP_Int16 mavg;