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_config.h" 22 : 23 : #if AP_SIM_SERIALPROXIMITYSENSOR_ENABLED 24 : 25 : #include "SIM_Aircraft.h" 26 : 27 : #include <SITL/SITL.h> 28 : 29 : #include "SIM_SerialDevice.h" 30 : 31 : namespace SITL { 32 : 33 : class SerialProximitySensor : public SerialDevice { 34 : public: 35 : 36 6 : SerialProximitySensor() {}; 37 : 38 : // update state 39 : virtual void update(const Location &location); 40 : 41 0 : virtual uint16_t reading_interval_ms() const { return 200; } // 5Hz default 42 : 43 : virtual uint32_t packet_for_location(const Location &location, 44 : uint8_t *data, 45 : uint8_t buflen) = 0; 46 : 47 : // return distance to nearest object at angle 48 487648 : float measure_distance_at_angle_bf(const Location &location, float angle) const { 49 487648 : return AP::sitl()->measure_distance_at_angle_bf(location, angle); 50 : } 51 : 52 : private: 53 : 54 : uint32_t last_sent_ms; 55 : 56 : }; 57 : 58 : } 59 : 60 : #endif