Added nrf24 reference protocol. Added CC3D targets.
[betaflight.git] / src / main / rx / nrf24.h
blob5156af15cb7b7bda68b6dab1cfbc5773eb7c596f
1 /*
2 * This file is part of Cleanflight.
4 * Cleanflight is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * Cleanflight is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
18 #pragma once
20 #include <stdbool.h>
21 #include <stdint.h>
23 #include "rx/rx.h"
25 typedef enum {
26 NRF24RX_V202_250K = 0,
27 NRF24RX_V202_1M,
28 NRF24RX_SYMA_X,
29 NRF24RX_SYMA_X5C,
30 NRF24RX_CX10,
31 NRF24RX_CX10A,
32 NRF24RX_H8_3D,
33 NRF24RX_REF,
34 NRF24RX_PROTOCOL_COUNT
35 } nrf24_protocol_t;
37 typedef enum {
38 NRF24_RECEIVED_NONE = 0,
39 NRF24_RECEIVED_BIND,
40 NRF24_RECEIVED_DATA
41 } nrf24_received_t;
43 // RC channels in AETR order
44 typedef enum {
45 NRF24_ROLL = 0,
46 NRF24_PITCH,
47 NRF24_THROTTLE,
48 NRF24_YAW,
49 NRF24_AUX1,
50 NRF24_AUX2,
51 NRF24_AUX3,
52 NRF24_AUX4,
53 NRF24_AUX5,
54 NRF24_AUX6,
55 NRF24_AUX7,
56 NRF24_AUX8,
57 NRF24_AUX9,
58 NRF24_AUX10,
59 NRF24_AUX11,
60 NRF24_AUX12,
61 NRF24_AUX13,
62 NRF24_AUX14
63 } nrf24_AETR_t;
65 // RC channels as used by deviation
66 #define RC_CHANNEL_RATE NRF24_AUX1
67 #define RC_CHANNEL_FLIP NRF24_AUX2
68 #define RC_CHANNEL_PICTURE NRF24_AUX3
69 #define RC_CHANNEL_VIDEO NRF24_AUX4
70 #define RC_CHANNEL_HEADLESS NRF24_AUX5
71 #define RC_CHANNEL_RTH NRF24_AUX6
73 bool rxNrf24DataReceived(void);
74 bool rxNrf24Init(nfr24l01_spi_type_e spiType, const rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, rcReadRawDataPtr *callback);