Communicate Rx available antenna mode to the Tx (#3039)
[ExpressLRS.git] / src / lib / CRSF2MSP / msp2crsf.h
blob86cf47a92153524471fc98fe8e92e224af19335b
1 #pragma once
3 #include <cstdint>
4 #include "FIFO.h"
5 #include "crsfmsp_common.h"
6 #include "crsf_protocol.h"
7 #include "crc.h"
8 #include "logging.h"
10 /* Takes a MSP frame and converts it to raw CRSF frame
11 adding the CRSF header and checksum. Handles chunking of messages
14 class MSP2CROSSFIRE
16 private:
17 // bool isBusy;
18 void setNewFrame(uint8_t &data, bool isNewFrame);
19 void setSeqNumber(uint8_t &data, uint8_t seqNumber);
20 void setVersion(uint8_t &data, MSPframeType_e version);
21 uint8_t getHeaderDir(uint8_t headerDir);
22 void setError(uint8_t &data, bool isError);
23 uint8_t seqNum;
25 uint32_t getFrameLen(uint32_t payloadLen, uint8_t mspVersion);
26 MSPframeType_e getVersion(const uint8_t *data);
27 uint32_t getPayloadLen(const uint8_t *data, MSPframeType_e mspVersion);
29 public:
30 MSP2CROSSFIRE();
31 FIFO<MSP_FRAME_MAX_LEN> FIFOout;
32 void parse(const uint8_t *data, uint32_t frameLen, uint8_t src = CRSF_ADDRESS_CRSF_RECEIVER, uint8_t dest = CRSF_ADDRESS_FLIGHT_CONTROLLER);
33 bool validate(const uint8_t *data, uint32_t expectLen);
36 extern MSP2CROSSFIRE msp2crsf;