Line data Source code
1 : /* 2 : This program is free software: you can redistribute it and/or modify 3 : it under the terms of the GNU General Public License as published by 4 : the Free Software Foundation, either version 3 of the License, or 5 : (at your option) any later version. 6 : 7 : This program is distributed in the hope that it will be useful, 8 : but WITHOUT ANY WARRANTY; without even the implied warranty of 9 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 : GNU General Public License for more details. 11 : 12 : You should have received a copy of the GNU General Public License 13 : along with this program. If not, see <http://www.gnu.org/licenses/>. 14 : */ 15 : /* 16 : Base class for serial rangefinders 17 : */ 18 : 19 : #pragma once 20 : 21 : #include "SIM_Aircraft.h" 22 : 23 : #include <SITL/SITL.h> 24 : 25 : #include "SIM_SerialDevice.h" 26 : 27 : namespace SITL { 28 : 29 : class SerialRangeFinder : public SerialDevice { 30 : public: 31 : 32 29 : SerialRangeFinder() {}; 33 : 34 : // update state 35 : virtual void update(float range); 36 : 37 : virtual uint32_t packet_for_alt(float alt_m, uint8_t *buffer, uint8_t buflen) = 0; 38 : 39 1945260 : virtual uint16_t reading_interval_ms() const { return 200; } // 5Hz default 40 : 41 : // Rangefinders that return temperature most likely a depthfinder for boats 42 114095 : virtual bool has_temperature() const { return false; } 43 0 : virtual uint32_t packet_for_temperature(float temperature, uint8_t *buffer, uint8_t buflen) { return 0; }; // 0 length packet by default 44 : 45 : private: 46 : void send_temperature(); 47 : 48 : uint32_t last_sent_ms; 49 : }; 50 : 51 : }