From 56d0d6b9beaa389cef699924089e7bea25fd5395 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 1 Nov 2018 11:21:03 +1100 Subject: [PATCH] AP_RCProtocol: make singleton used by iomcu --- libraries/AP_RCProtocol/AP_RCProtocol.cpp | 3 +++ libraries/AP_RCProtocol/AP_RCProtocol.h | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/libraries/AP_RCProtocol/AP_RCProtocol.cpp b/libraries/AP_RCProtocol/AP_RCProtocol.cpp index f78b783e93..4fbc0565bc 100644 --- a/libraries/AP_RCProtocol/AP_RCProtocol.cpp +++ b/libraries/AP_RCProtocol/AP_RCProtocol.cpp @@ -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); diff --git a/libraries/AP_RCProtocol/AP_RCProtocol.h b/libraries/AP_RCProtocol/AP_RCProtocol.h index 3112302264..11229a116b 100644 --- a/libraries/AP_RCProtocol/AP_RCProtocol.h +++ b/libraries/AP_RCProtocol/AP_RCProtocol.h @@ -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: 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"