mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-19 14:25:20 +03:00
ExpressLrs v2.0.0 support
This commit is contained in:
parent
4c034d67ee
commit
e00a3abc59
56 changed files with 6235 additions and 49 deletions
110
src/main/rx/expresslrs_impl.h
Normal file
110
src/main/rx/expresslrs_impl.h
Normal file
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* This file is part of Cleanflight and Betaflight.
|
||||
*
|
||||
* Cleanflight and Betaflight are free software. You can redistribute
|
||||
* this software and/or modify this software under the terms of the
|
||||
* GNU General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Cleanflight and Betaflight are distributed in the hope that they
|
||||
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software.
|
||||
*
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
// expresslrs packet header types
|
||||
// 00 -> standard 4 channel data packet
|
||||
// 01 -> switch data packet
|
||||
// 11 -> tlm packet
|
||||
// 10 -> sync packet with hop data
|
||||
typedef enum {
|
||||
ELRS_RC_DATA_PACKET = 0x00,
|
||||
ELRS_MSP_DATA_PACKET = 0x01,
|
||||
ELRS_SYNC_PACKET = 0x02,
|
||||
ELRS_TLM_PACKET = 0x03,
|
||||
} elrsPacketType_e;
|
||||
|
||||
typedef enum {
|
||||
ELRS_DIO_UNKNOWN = 0,
|
||||
ELRS_DIO_RX_DONE = 1,
|
||||
ELRS_DIO_TX_DONE = 2
|
||||
} dioReason_e;
|
||||
|
||||
typedef enum {
|
||||
ELRS_CONNECTED,
|
||||
ELRS_TENTATIVE,
|
||||
ELRS_DISCONNECTED,
|
||||
ELRS_DISCONNECT_PENDING // used on modelmatch change to drop the connection
|
||||
} connectionState_e;
|
||||
|
||||
typedef enum {
|
||||
ELRS_TIM_DISCONNECTED = 0,
|
||||
ELRS_TIM_TENTATIVE = 1,
|
||||
ELRS_TIM_LOCKED = 2
|
||||
} timerState_e;
|
||||
|
||||
typedef struct elrsReceiver_s {
|
||||
|
||||
IO_t resetPin;
|
||||
IO_t busyPin;
|
||||
|
||||
int32_t freqOffset;
|
||||
uint32_t currentFreq;
|
||||
|
||||
volatile uint8_t nonceRX; // nonce that we THINK we are up to.
|
||||
|
||||
elrsModSettings_t *modParams;
|
||||
elrsRfPerfParams_t *rfPerfParams;
|
||||
|
||||
const uint8_t *UID;
|
||||
|
||||
int8_t rssi;
|
||||
int8_t snr;
|
||||
int8_t rssiFiltered;
|
||||
|
||||
uint8_t uplinkLQ;
|
||||
|
||||
bool alreadyFHSS;
|
||||
bool alreadyTLMresp;
|
||||
bool lockRFmode;
|
||||
|
||||
timerState_e timerState;
|
||||
connectionState_e connectionState;
|
||||
|
||||
uint8_t rfModeCycleMultiplier;
|
||||
uint16_t cycleIntervalMs;
|
||||
uint32_t rfModeCycledAtMs;
|
||||
uint8_t rateIndex;
|
||||
uint8_t nextRateIndex;
|
||||
|
||||
uint32_t gotConnectionMs;
|
||||
uint32_t lastSyncPacketMs;
|
||||
uint32_t lastValidPacketMs;
|
||||
|
||||
uint32_t configCheckedAtMs;
|
||||
bool configChanged;
|
||||
|
||||
bool inBindingMode;
|
||||
volatile bool fhssRequired;
|
||||
|
||||
uint32_t statsUpdatedAtMs;
|
||||
|
||||
elrsRxInitFnPtr init;
|
||||
elrsRxConfigFnPtr config;
|
||||
elrsRxStartReceivingFnPtr startReceiving;
|
||||
elrsRxISRFnPtr rxISR;
|
||||
elrsRxTransmitDataFnPtr transmitData;
|
||||
elrsRxReceiveDataFnPtr receiveData;
|
||||
elrsRxGetRFlinkInfoFnPtr getRFlinkInfo;
|
||||
elrsRxSetFrequencyFnPtr setFrequency;
|
||||
elrsRxHandleFreqCorrectionFnPtr handleFreqCorrection;
|
||||
|
||||
timerOvrHandlerRec_t timerUpdateCb;
|
||||
} elrsReceiver_t;
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue