Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rx Specific lua params #1362

Merged
merged 23 commits into from Feb 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/include/target/AXIS_THOR_2400_RX.h
Expand Up @@ -13,4 +13,4 @@
#define GPIO_PIN_ANTENNA_SELECT 0 // Low = Ant1, High = Ant2, pulled high by external resistor
#endif

// Output Power - use default SX1280
#define POWER_OUTPUT_FIXED 13 //MAX power for 2400 RXes that doesn't have PA is 12.5dbm
5 changes: 4 additions & 1 deletion src/include/target/BETAFPV_2400_RX.h
Expand Up @@ -19,4 +19,7 @@
#define GPIO_PIN_TX_ENABLE 10

// Output Power
#define POWER_OUTPUT_FIXED 1 // -10=10mW, -6=25mW, -3=50mW, 1=100mW
#define MinPower PWR_10mW
#define MaxPower PWR_100mW
#define DefaultPower PWR_100mW
#define POWER_OUTPUT_VALUES {-10,-6,-3,1} //has PA, use Power array
2 changes: 1 addition & 1 deletion src/include/target/DIY_2400_RX_ESP8285_SX1280.h
Expand Up @@ -15,4 +15,4 @@
#define GPIO_PIN_ANTENNA_SELECT 0 // Low = Ant1, High = Ant2, pulled high by external resistor
#endif

// Output Power - use default SX1280
#define POWER_OUTPUT_FIXED 13 //MAX power for 2400 RXes that doesn't have PA is 12.5dbm
2 changes: 2 additions & 0 deletions src/include/target/DIY_2400_RX_PWMP.h
Expand Up @@ -21,3 +21,5 @@
#else
#define GPIO_PIN_PWM_OUTPUTS {0, 1, 3, 9, 10}
#endif

#define POWER_OUTPUT_FIXED 13 //MAX power for 2400 RXes that doesn't have PA is 12.5dbm
2 changes: 2 additions & 0 deletions src/include/target/DIY_2400_RX_STM32_CCG_Nano_v0_5.h
Expand Up @@ -18,3 +18,5 @@
#define GPIO_PIN_LED_RED PB5

// Output Power - use default SX1280

#define POWER_OUTPUT_FIXED 13 //MAX power for 2400 RXes that doesn't have PA is 12.5dbm
2 changes: 2 additions & 0 deletions src/include/target/DIY_2400_RX_VTX.h
Expand Up @@ -22,3 +22,5 @@
#define GPIO_PIN_RF_AMP_VPD A0
#define VPD_VALUES_25MW {460, 470, 505, 505} // To be calibrated per target.
#define VPD_VALUES_100MW {830, 840, 890, 895} // To be calibrated per target.

#define POWER_OUTPUT_FIXED 13 //MAX power for 2400 RXes that doesn't have PA is 12.5dbm
2 changes: 1 addition & 1 deletion src/include/target/DIY_900_RX_ESP8285_SX127x.h
Expand Up @@ -15,4 +15,4 @@
#define GPIO_PIN_LED 16
#define GPIO_PIN_BUTTON 0

// Output Power - default for SX127x
#define POWER_OUTPUT_FIXED 15 //MAX power for 900 RXes
2 changes: 1 addition & 1 deletion src/include/target/DIY_900_RX_HUZZAH_RFM95W.h
Expand Up @@ -14,4 +14,4 @@
#define GPIO_PIN_RCSIGNAL_TX -1
#define GPIO_PIN_LED 0

// Output Power - default for SX127x
#define POWER_OUTPUT_FIXED 15 //MAX power for 900 RXes
4 changes: 3 additions & 1 deletion src/include/target/DIY_900_RX_PWMP.h
Expand Up @@ -19,4 +19,6 @@
#define GPIO_PIN_PWM_OUTPUTS {0, 5, 9, 10}
#else
#define GPIO_PIN_PWM_OUTPUTS {0, 1, 3, 5, 9, 10}
#endif
#endif

#define POWER_OUTPUT_FIXED 15 //MAX power for 900 RXes
9 changes: 4 additions & 5 deletions src/include/target/FM30_RX_MINI.h
Expand Up @@ -47,9 +47,8 @@
#define MaxPower PWR_250mW
#define POWER_OUTPUT_VALUES {-15,-11,-7,-1,6}
#else
#ifdef UNLOCK_HIGHER_POWER
#define POWER_OUTPUT_FIXED 6 // 250mW (uses values as above)
#else
#define POWER_OUTPUT_FIXED -1 // 100mW (uses values as above)
#endif
#define MinPower PWR_10mW
#define MaxPower PWR_100mW
#define DefaultPower PWR_100mW
#define POWER_OUTPUT_VALUES {-10,-6,-3,1} //has PA, use Power array
#endif
1 change: 1 addition & 0 deletions src/include/target/Frsky_RX_R9M.h
Expand Up @@ -73,6 +73,7 @@ Credit to Jacob Walser (jaxxzer) for the pinout!!!
#define GPIO_PIN_BUTTON PC13 // pullup e.g. LOW when pressed
#endif

#define POWER_OUTPUT_FIXED 15 //MAX power for 900 RXes
// External pads
// #define R9m_Ch1 PA8
// #define R9m_Ch2 PA11
Expand Down
2 changes: 2 additions & 0 deletions src/include/target/GHOST_ATTO_2400_RX.h
Expand Up @@ -22,3 +22,5 @@
//#define GPIO_PIN_BUTTON PA12

// Output Power - use default SX1280

#define POWER_OUTPUT_FIXED 13 //MAX power for 2400 RXes that doesn't have PA is 12.5dbm
5 changes: 4 additions & 1 deletion src/include/target/MATEK_2400_RX.h
Expand Up @@ -18,4 +18,7 @@
#endif

// Output Power
#define POWER_OUTPUT_FIXED 3
#define MinPower PWR_10mW
#define MaxPower PWR_100mW
#define DefaultPower PWR_100mW
#define POWER_OUTPUT_VALUES {-10,-6,-3,1} //has PA, use Power array
2 changes: 2 additions & 0 deletions src/include/target/NamimnoRC_FLASH_2400_RX_ESP8285.h
Expand Up @@ -16,3 +16,5 @@
#endif

// Output Power - use default SX1280

#define POWER_OUTPUT_FIXED 13 //MAX power for 2400 RXes that doesn't have PA is 12.5dbm
2 changes: 2 additions & 0 deletions src/include/target/NamimnoRC_FLASH_2400_RX_STM32.h
Expand Up @@ -17,3 +17,5 @@
#define GPIO_PIN_RCSIGNAL_TX PA9

// Output Power - default for SX120

#define POWER_OUTPUT_FIXED 13 //MAX power for 2400 RXes that doesn't have PA is 12.5dbm
1 change: 1 addition & 0 deletions src/include/target/NamimnoRC_VOYAGER_900_ESP_RX.h
Expand Up @@ -16,3 +16,4 @@
#define GPIO_PIN_BUTTON 0

// Output Power - default for SX127x
#define POWER_OUTPUT_FIXED 15 //MAX power for 900 RXes
1 change: 1 addition & 0 deletions src/include/target/NamimnoRC_VOYAGER_900_RX.h
Expand Up @@ -18,3 +18,4 @@
#define GPIO_PIN_RCSIGNAL_TX PA9

// Output Power - default for SX127x
#define POWER_OUTPUT_FIXED 15 //MAX power for 900 RXes
5 changes: 4 additions & 1 deletion src/include/target/Vantac_2400_RX.h
Expand Up @@ -16,4 +16,7 @@
#define GPIO_PIN_TX_ENABLE 10

// Output Power
#define POWER_OUTPUT_FIXED 1 // -10=10mW, -6=25mW, -3=50mW, 1=100mW
#define MinPower PWR_10mW
#define MaxPower PWR_100mW
#define DefaultPower PWR_100mW
#define POWER_OUTPUT_VALUES {-10,-6,-3,1} //has PA, use Power array
3 changes: 2 additions & 1 deletion src/include/target/iFlight_2400_RX.h
Expand Up @@ -16,4 +16,5 @@
#define GPIO_PIN_BUTTON 0

// Output Power
#define POWER_OUTPUT_FIXED 3

#define POWER_OUTPUT_FIXED 13 //MAX power for 2400 RXes that doesn't have PA is 12.5dbm
29 changes: 29 additions & 0 deletions src/lib/CONFIG/config.cpp
Expand Up @@ -504,13 +504,42 @@ RxConfig::SetModelId(uint8_t modelId)
}
}

void
RxConfig::SetPower(uint8_t power)
{
if (m_config.power != power)
{
m_config.power = power;
m_modified = true;
}
}


void
RxConfig::SetAntennaMode(uint8_t antennaMode)
{
//0 and 1 is use for gpio_antenna_select
// 2 is diversity
if (m_config.antennaMode != antennaMode)
{
m_config.antennaMode = antennaMode;
m_modified = true;
}
}

void
RxConfig::SetDefaults()
{
m_config.version = RX_CONFIG_VERSION | RX_CONFIG_MAGIC;
SetIsBound(false);
SetPowerOnCounter(0);
SetModelId(0xFF);
SetPower(POWERMGNT::getDefaultPower());
#if defined(GPIO_PIN_ANTENNA_SELECT) && defined(USE_DIVERSITY)
SetAntennaMode(2); //2 is diversity
#else
SetAntennaMode(1); //0 and 1 is use for gpio_antenna_select
#endif
SetSSID("");
SetPassword("");
#if defined(GPIO_PIN_PWM_OUTPUTS)
Expand Down
9 changes: 8 additions & 1 deletion src/lib/CONFIG/config.h
Expand Up @@ -13,7 +13,7 @@
#define RX_CONFIG_MAGIC (0b10 << 30)

#define TX_CONFIG_VERSION 5
#define RX_CONFIG_VERSION 4
#define RX_CONFIG_VERSION 5
#define UID_LEN 6

#if defined(TARGET_TX)
Expand Down Expand Up @@ -128,6 +128,9 @@ typedef struct {
uint8_t uid[UID_LEN];
uint8_t powerOnCounter;
uint8_t modelId;
uint8_t power;
uint8_t antennaMode; //keep antenna mode in struct even in non diversity RX,
// because turning feature diversity on and off would require change of RX config version.
char ssid[33];
char password[33];
rx_config_pwm_t pwmChannels[PWM_MAX_CHANNELS];
Expand All @@ -150,6 +153,8 @@ class RxConfig
const uint8_t* GetUID() const { return m_config.uid; }
uint8_t GetPowerOnCounter() const { return m_config.powerOnCounter; }
uint8_t GetModelId() const { return m_config.modelId; }
uint8_t GetPower() const { return m_config.power; }
uint8_t GetAntennaMode() const { return m_config.antennaMode; }
bool IsModified() const { return m_modified; }
const char* GetSSID() const { return m_config.ssid; }
const char* GetPassword() const { return m_config.password; }
Expand All @@ -162,6 +167,8 @@ class RxConfig
void SetUID(uint8_t* uid);
void SetPowerOnCounter(uint8_t powerOnCounter);
void SetModelId(uint8_t modelId);
void SetPower(uint8_t power);
void SetAntennaMode(uint8_t antennaMode);
void SetDefaults();
void SetStorageProvider(ELRS_EEPROM *eeprom);
void SetSSID(const char *ssid);
Expand Down
4 changes: 2 additions & 2 deletions src/lib/CRSF/CRSF.cpp
Expand Up @@ -45,6 +45,8 @@ inBuffer_U CRSF::inBuffer;

volatile crsfPayloadLinkstatistics_s CRSF::LinkStatistics;

volatile uint8_t CRSF::ParameterUpdateData[3] = {0};

#if CRSF_TX_MODULE
#define HANDSET_TELEMETRY_FIFO_SIZE 128 // this is the smallest telemetry FIFO size in ETX with CRSF defined

Expand All @@ -69,7 +71,6 @@ uint32_t CRSF::BadPktsCountResult = 0;

uint8_t CRSF::modelId = 0;
bool CRSF::ForwardDevicePings = false;
volatile uint8_t CRSF::ParameterUpdateData[3] = {0};
volatile bool CRSF::elrsLUAmode = false;

/// OpenTX mixer sync ///
Expand Down Expand Up @@ -972,6 +973,5 @@ void CRSF::SetExtendedHeaderAndCrc(uint8_t *frame, uint8_t frameType, uint8_t fr
header->frame_size = frameSize;

uint8_t crc = crsf_crc.calc(&frame[CRSF_FRAME_NOT_COUNTED_BYTES], header->frame_size - 1, 0);

frame[header->frame_size + CRSF_FRAME_NOT_COUNTED_BYTES - 1] = crc;
}
5 changes: 3 additions & 2 deletions src/lib/CRSF/CRSF.h
Expand Up @@ -50,6 +50,9 @@ class CRSF

/////Variables/////


static volatile uint8_t ParameterUpdateData[3];

#ifdef CRSF_TX_MODULE
static void inline nullCallback(void);

Expand All @@ -63,7 +66,6 @@ class CRSF
// The model ID as received from the Transmitter
static uint8_t modelId;
static bool ForwardDevicePings; // true if device pings should be forwarded OTA
static volatile uint8_t ParameterUpdateData[3];
static volatile bool elrsLUAmode;

/// UART Handling ///
Expand Down Expand Up @@ -125,7 +127,6 @@ class CRSF
void sendLinkStatisticsToFC();
#endif


/////////////////////////////////////////////////////////////
static bool CRSFstate;

Expand Down
2 changes: 2 additions & 0 deletions src/lib/CrsfProtocol/crsf_protocol.h
Expand Up @@ -56,6 +56,8 @@

#define CRSF_TELEMETRY_LENGTH_INDEX 1
#define CRSF_TELEMETRY_TYPE_INDEX 2
#define CRSF_TELEMETRY_FIELD_ID_INDEX 5
#define CRSF_TELEMETRY_FIELD_CHUNK_INDEX 6
#define CRSF_TELEMETRY_CRC_LENGTH 1
#define CRSF_TELEMETRY_TOTAL_SIZE(x) (x + CRSF_FRAME_LENGTH_EXT_TYPE_CRC)

Expand Down