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_RPM.h" 18 : 19 : #if AP_RPM_ENABLED 20 : 21 : class AP_RPM_Backend 22 : { 23 : public: 24 : // constructor. This incorporates initialisation as well. 25 : AP_RPM_Backend(AP_RPM &_ap_rpm, uint8_t instance, AP_RPM::RPM_State &_state); 26 : 27 : // we declare a virtual destructor so that RPM drivers can 28 : // override with a custom destructor if need be 29 0 : virtual ~AP_RPM_Backend(void) {} 30 : 31 : // update the state structure. All backends must implement this. 32 : virtual void update() = 0; 33 : 34 0 : int8_t get_pin(void) const { 35 0 : if (state.instance >= RPM_MAX_INSTANCES) { 36 0 : return -1; 37 : } 38 0 : return ap_rpm._params[state.instance].pin.get(); 39 : } 40 : 41 : void update_esc_telem_outbound(); 42 : 43 : protected: 44 : 45 : AP_RPM &ap_rpm; 46 : AP_RPM::RPM_State &state; 47 : }; 48 : 49 : #endif // AP_RPM_ENABLED