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 : #pragma once 16 : 17 : #include <AP_Common/AP_Common.h> 18 : #include "AP_WheelEncoder.h" 19 : 20 : class AP_WheelEncoder_Backend 21 : { 22 : public: 23 : // constructor. This incorporates initialisation as well. 24 : AP_WheelEncoder_Backend(AP_WheelEncoder &frontend, uint8_t instance, AP_WheelEncoder::WheelEncoder_State &state); 25 : 26 : // we declare a virtual destructor so that WheelEncoder drivers can 27 : // override with a custom destructor if need be 28 0 : virtual ~AP_WheelEncoder_Backend(void) {} 29 : 30 : // update the state structure. All backends must implement this. 31 : virtual void update() = 0; 32 : 33 : protected: 34 : 35 : // return pin number. returns -1 if pin is not defined for this instance 36 : int8_t get_pin_a() const; 37 : int8_t get_pin_b() const; 38 : 39 : // copy state to front end helper function 40 : void copy_state_to_frontend(int32_t distance_count, uint32_t total_count, uint32_t error_count, uint32_t last_reading_ms); 41 : 42 : AP_WheelEncoder &_frontend; 43 : AP_WheelEncoder::WheelEncoder_State &_state; 44 : };