Skip to content

Commit df42e51

Browse files
authored
iFlight 2.4G and 900M Tx and Rx targets (ExpressLRS#1106)
* iFlight * correct GPIO_PIN_DIO1 * iFlight 900 * adds TARGET_TX_IFLIGHT_900 and led/button features * adds 500mW option to 2.4 tx * adds USE_SX1276_RFO_HF define * adds USE_SX1280_DCDC to iFlight 2.4 Rx * adds led settings for iFlight low power output levels And a clean up Co-authored-by: Jye <[email protected]>
1 parent fd7e1d0 commit df42e51

13 files changed

Lines changed: 205 additions & 7 deletions

File tree

src/include/target/BETAFPV_900_TX.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
// There is some special handling for this target
66
#define TARGET_TX_BETAFPV_900_V1
7+
#define USE_SX1276_RFO_HF
78

89
// GPIO pin definitions
910
#define GPIO_PIN_NSS 5
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#define DEVICE_NAME "iFlight 2400RX"
2+
3+
#define USE_SX1280_DCDC
4+
5+
// GPIO pin definitions
6+
#define GPIO_PIN_NSS 15
7+
#define GPIO_PIN_BUSY 4
8+
#define GPIO_PIN_DIO1 5
9+
#define GPIO_PIN_MOSI 13
10+
#define GPIO_PIN_MISO 12
11+
#define GPIO_PIN_SCK 14
12+
#define GPIO_PIN_RST 2
13+
#define GPIO_PIN_RX_ENABLE 9
14+
#define GPIO_PIN_TX_ENABLE 10
15+
#define GPIO_PIN_LED 16
16+
#define GPIO_PIN_BUTTON 0
17+
18+
// Output Power
19+
#define POWER_OUTPUT_FIXED 3
20+
21+
#define Regulatory_Domain_ISM_2400 1
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#define DEVICE_NAME "iFlight 2400TX"
2+
3+
// Any device features
4+
#define TARGET_TX_IFLIGHT
5+
#define USE_SX1280_DCDC
6+
7+
// GPIO pin definitions
8+
#define GPIO_PIN_NSS 5
9+
#define GPIO_PIN_BUSY 25
10+
#define GPIO_PIN_DIO1 17
11+
#define GPIO_PIN_MOSI 23
12+
#define GPIO_PIN_MISO 19
13+
#define GPIO_PIN_SCK 18
14+
#define GPIO_PIN_RST 22
15+
#define GPIO_PIN_RX_ENABLE 21
16+
#define GPIO_PIN_TX_ENABLE 4
17+
#define GPIO_PIN_RCSIGNAL_RX 13
18+
#define GPIO_PIN_RCSIGNAL_TX 13
19+
#define GPIO_PIN_LED_RED 14
20+
#define GPIO_PIN_LED_GREEN 27
21+
#define GPIO_PIN_LED_BLUE 26
22+
#define GPIO_PIN_BUTTON 15
23+
24+
// Output Power
25+
#define MinPower PWR_10mW
26+
#define MaxPower PWR_500mW
27+
#define POWER_OUTPUT_VALUES {-18,-15,-11,-8,-4,3}
28+
29+
#define Regulatory_Domain_ISM_2400 1
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#define DEVICE_NAME "iFlight 900TX"
2+
3+
// Any device features
4+
#define TARGET_TX_IFLIGHT
5+
#define USE_SX1276_RFO_HF
6+
7+
// GPIO pin definitions
8+
#define GPIO_PIN_NSS 5
9+
#define GPIO_PIN_DIO0 17
10+
#define GPIO_PIN_DIO1 16
11+
#define GPIO_PIN_MOSI 23
12+
#define GPIO_PIN_MISO 19
13+
#define GPIO_PIN_SCK 18
14+
#define GPIO_PIN_RST 22
15+
#define GPIO_PIN_RX_ENABLE 21
16+
#define GPIO_PIN_TX_ENABLE 4
17+
#define GPIO_PIN_RCSIGNAL_RX 13
18+
#define GPIO_PIN_RCSIGNAL_TX 13
19+
#define GPIO_PIN_LED_RED 14
20+
#define GPIO_PIN_LED_GREEN 27
21+
#define GPIO_PIN_LED_BLUE 26
22+
#define GPIO_PIN_BUTTON 15
23+
24+
// Output Power
25+
#define MinPower PWR_100mW
26+
#define MaxPower PWR_1000mW
27+
#define POWER_OUTPUT_VALUES {0,4,7,11}

src/include/targets.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@
7272
#ifndef GPIO_LED_GREEN_INVERTED
7373
#define GPIO_LED_GREEN_INVERTED 0
7474
#endif
75+
#ifndef GPIO_LED_BLUE_INVERTED
76+
#define GPIO_LED_BLUE_INVERTED 0
77+
#endif
7578

7679
#if defined(Regulatory_Domain_ISM_2400)
7780
// ISM 2400 band is use => undefine other requlatory domain defines

src/lib/BUTTON/devButton.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
static Button<GPIO_PIN_BUTTON, GPIO_BUTTON_INVERTED> button;
1010

11-
#if defined(TARGET_TX_BETAFPV_2400_V1) || defined(TARGET_TX_BETAFPV_900_V1)
11+
#if defined(TARGET_TX_BETAFPV_2400_V1) || defined(TARGET_TX_BETAFPV_900_V1) || defined(TARGET_TX_IFLIGHT)
1212
#include "POWERMGNT.h"
1313
void EnterBindingMode();
1414

@@ -55,7 +55,7 @@ static void rxWebUpdateReboot()
5555

5656
static void initialize()
5757
{
58-
#if defined(TARGET_TX_BETAFPV_2400_V1) || defined(TARGET_TX_BETAFPV_900_V1)
58+
#if defined(TARGET_TX_BETAFPV_2400_V1) || defined(TARGET_TX_BETAFPV_900_V1) || defined(TARGET_TX_IFLIGHT)
5959
button.OnShortPress = enterBindMode3Click;
6060
button.OnLongPress = cyclePower;
6161
#endif

src/lib/BUTTON/devButton.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "device.h"
44

55
#if defined(GPIO_PIN_BUTTON) && (GPIO_PIN_BUTTON != UNDEF_PIN)
6-
#if (defined(TARGET_TX_BETAFPV_2400_V1) || defined(TARGET_TX_BETAFPV_900_V1)) || \
6+
#if (defined(TARGET_TX_BETAFPV_2400_V1) || defined(TARGET_TX_BETAFPV_900_V1) || defined(TARGET_TX_IFLIGHT)) || \
77
(defined(TARGET_RX) && (defined(PLATFORM_ESP32) || defined(PLATFORM_ESP8266)))
88
extern device_t Button_device;
99
#define HAS_BUTTON

src/lib/LED/devLED.cpp

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,12 @@ static uint16_t flashLED(uint8_t pin, uint8_t pin_inverted, const uint8_t durati
5151

5252
static void initialize()
5353
{
54+
// TODO for future PR, remove TARGET_TX, TARGET_RX, and TARGET_TX_FM30 defines.
5455
#if defined(TARGET_TX)
55-
#if defined(TARGET_TX_BETAFPV_2400_V1) || defined(TARGET_TX_BETAFPV_900_V1)
56+
#if defined(GPIO_PIN_LED_BLUE) && (GPIO_PIN_LED_BLUE != UNDEF_PIN)
5657
pinMode(GPIO_PIN_LED_BLUE, OUTPUT);
57-
#endif
58+
digitalWrite(GPIO_PIN_LED_BLUE, LOW ^ GPIO_LED_BLUE_INVERTED);
59+
#endif // GPIO_PIN_BLUE_GREEN
5860
#if defined(GPIO_PIN_LED_GREEN) && (GPIO_PIN_LED_GREEN != UNDEF_PIN)
5961
pinMode(GPIO_PIN_LED_GREEN, OUTPUT);
6062
digitalWrite(GPIO_PIN_LED_GREEN, HIGH ^ GPIO_LED_GREEN_INVERTED);
@@ -118,6 +120,48 @@ static void setPowerLEDs()
118120
break;
119121
}
120122
#endif
123+
124+
#if defined(TARGET_TX_IFLIGHT)
125+
switch (POWERMGNT::currPower())
126+
{
127+
case PWR_10mW:
128+
digitalWrite(GPIO_PIN_LED_RED, HIGH);
129+
digitalWrite(GPIO_PIN_LED_GREEN, LOW);
130+
digitalWrite(GPIO_PIN_LED_BLUE, LOW);
131+
break;
132+
case PWR_25mW:
133+
digitalWrite(GPIO_PIN_LED_RED, LOW);
134+
digitalWrite(GPIO_PIN_LED_GREEN, HIGH);
135+
digitalWrite(GPIO_PIN_LED_BLUE, LOW);
136+
break;
137+
case PWR_50mW:
138+
digitalWrite(GPIO_PIN_LED_RED, LOW);
139+
digitalWrite(GPIO_PIN_LED_GREEN, LOW);
140+
digitalWrite(GPIO_PIN_LED_BLUE, HIGH);
141+
break;
142+
case PWR_250mW:
143+
digitalWrite(GPIO_PIN_LED_RED, HIGH);
144+
digitalWrite(GPIO_PIN_LED_GREEN, LOW);
145+
digitalWrite(GPIO_PIN_LED_BLUE, HIGH);
146+
break;
147+
case PWR_500mW:
148+
digitalWrite(GPIO_PIN_LED_RED, LOW);
149+
digitalWrite(GPIO_PIN_LED_GREEN, HIGH);
150+
digitalWrite(GPIO_PIN_LED_BLUE, HIGH);
151+
break;
152+
case PWR_1000mW:
153+
digitalWrite(GPIO_PIN_LED_RED, HIGH);
154+
digitalWrite(GPIO_PIN_LED_GREEN, HIGH);
155+
digitalWrite(GPIO_PIN_LED_BLUE, HIGH);
156+
break;
157+
case PWR_100mW:
158+
default:
159+
digitalWrite(GPIO_PIN_LED_RED, HIGH);
160+
digitalWrite(GPIO_PIN_LED_GREEN, HIGH);
161+
digitalWrite(GPIO_PIN_LED_BLUE, LOW);
162+
break;
163+
}
164+
#endif
121165
}
122166

123167
static int event()

src/lib/SX127xDriver/SX127x.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ void SX127xDriver::SetSyncWord(uint8_t syncWord)
157157
void SX127xDriver::SetOutputPower(uint8_t Power)
158158
{
159159
SetMode(SX127x_OPMODE_STANDBY);
160-
#ifdef TARGET_TX_BETAFPV_900_V1
160+
#if defined(USE_SX1276_RFO_HF)
161161
hal.writeRegister(SX127X_REG_PA_CONFIG, SX127X_PA_SELECT_RFO | SX127X_MAX_OUTPUT_POWER | Power);
162162
#else
163163
hal.writeRegister(SX127X_REG_PA_CONFIG, SX127X_PA_SELECT_BOOST | SX127X_MAX_OUTPUT_POWER | Power);

src/lib/SX127xDriver/SX127xRegs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ typedef enum
104104
#define SX127X_PA_SELECT_RFO 0b00000000 // 7 7 RFO pin output, power limited to +14 dBm
105105
#define SX127X_PA_SELECT_BOOST 0b10000000 // 7 7 PA_BOOST pin output, power limited to +20 dBm
106106
#define SX127X_OUTPUT_POWER 0b00001111 // 3 0 output power: P_out = 17 - (15 - OUTPUT_POWER) [dBm] for PA_SELECT_BOOST
107-
#ifdef TARGET_TX_BETAFPV_900_V1
107+
#if defined(USE_SX1276_RFO_HF)
108108
#define SX127X_MAX_OUTPUT_POWER 0b00000000 // Enable max output power
109109
#else
110110
#define SX127X_MAX_OUTPUT_POWER 0b01110000 // Enable max output power

0 commit comments

Comments
 (0)