Browse Source

AP_RCProtocol: make singleton

used by iomcu
mission-4.1.18
Andrew Tridgell 6 years ago
parent
commit
56d0d6b9be
  1. 3
      libraries/AP_RCProtocol/AP_RCProtocol.cpp
  2. 11
      libraries/AP_RCProtocol/AP_RCProtocol.h

3
libraries/AP_RCProtocol/AP_RCProtocol.cpp

@ -24,6 +24,9 @@ @@ -24,6 +24,9 @@
#include "AP_RCProtocol_SRXL.h"
#include "AP_RCProtocol_ST24.h"
// singleton
AP_RCProtocol *AP_RCProtocol::instance;
void AP_RCProtocol::init()
{
backend[AP_RCProtocol::PPM] = new AP_RCProtocol_PPMSum(*this);

11
libraries/AP_RCProtocol/AP_RCProtocol.h

@ -22,8 +22,12 @@ @@ -22,8 +22,12 @@
#define MIN_RCIN_CHANNELS 5
class AP_RCProtocol_Backend;
class AP_RCProtocol {
public:
AP_RCProtocol() {
instance = this;
}
enum rcprotocol_t {
PPM = 0,
SBUS,
@ -50,12 +54,19 @@ public: @@ -50,12 +54,19 @@ public:
bool new_input();
void start_bind(void);
// access to singleton
static AP_RCProtocol *get_instance(void) {
return instance;
}
private:
enum rcprotocol_t _detected_protocol = NONE;
AP_RCProtocol_Backend *backend[NONE];
bool _new_input = false;
uint32_t _last_input_ms;
bool _valid_serial_prot = false;
static AP_RCProtocol *instance;
};
#include "AP_RCProtocol_Backend.h"

Loading…
Cancel
Save