From a08416e736376ff270917568b9a23191ff932904 Mon Sep 17 00:00:00 2001 From: Pierre Kancir Date: Wed, 30 Oct 2024 12:24:20 +0100 Subject: [PATCH] SITL: simulate generic chinese sonar sensor --- .../SITL/SIM_RF_GenericCSonar_Serial.cpp | 35 +++++++++++++++ libraries/SITL/SIM_RF_GenericCSonar_Serial.h | 43 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 libraries/SITL/SIM_RF_GenericCSonar_Serial.cpp create mode 100644 libraries/SITL/SIM_RF_GenericCSonar_Serial.h diff --git a/libraries/SITL/SIM_RF_GenericCSonar_Serial.cpp b/libraries/SITL/SIM_RF_GenericCSonar_Serial.cpp new file mode 100644 index 0000000000000..bd4e29fb1c369 --- /dev/null +++ b/libraries/SITL/SIM_RF_GenericCSonar_Serial.cpp @@ -0,0 +1,35 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +/* + Simulator for the Generic Chinese Sonar rangefinder : A02YYUW; ME007YS +*/ + +#include "SIM_RF_GenericCSonar_Serial.h" + +#include +#include + + +using namespace SITL; + +uint32_t RF_GenericCSonar_Serial::packet_for_alt(uint16_t alt_cm, uint8_t *buffer, uint8_t buflen) +{ + buffer[0] = 0xFF; + buffer[1] = (alt_cm * 10) >> 8; + buffer[2] = (alt_cm * 10) & 0xff; + buffer[3] = (buffer[0] + buffer[1] + buffer[2]) & 0x00FF; + + return 4; +} diff --git a/libraries/SITL/SIM_RF_GenericCSonar_Serial.h b/libraries/SITL/SIM_RF_GenericCSonar_Serial.h new file mode 100644 index 0000000000000..be4c113c42bf0 --- /dev/null +++ b/libraries/SITL/SIM_RF_GenericCSonar_Serial.h @@ -0,0 +1,43 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +/* + Simulator for the Lanbao rangefinder + +./Tools/autotest/sim_vehicle.py --gdb --debug -v ArduCopter -A --serial5=sim:genericcsonar_serial --speedup=1 + +param set SERIAL5_PROTOCOL 9 +param set RNGFND1_TYPE 44 +graph RANGEFINDER.distance +graph GLOBAL_POSITION_INT.relative_alt/1000-RANGEFINDER.distance +reboot + +arm throttle +rc 3 1600 +*/ + +#pragma once + +#include "SIM_SerialRangeFinder.h" + +namespace SITL { + +class RF_GenericCSonar_Serial : public SerialRangeFinder { +public: + + uint32_t packet_for_alt(uint16_t alt_cm, uint8_t *buffer, uint8_t buflen) override; + +}; + +}