mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-02 19:02:00 +00:00
* refactored 'FEM' commands for HeltecTrackerV2 & HeltecV4
This commit is contained in:
@@ -139,7 +139,7 @@ void T096Board::attachDynamicPrefs(KeyValueStore* prefs) {
|
|||||||
_prefs = prefs;
|
_prefs = prefs;
|
||||||
|
|
||||||
char radio_fem_rxgain[8] = { 0 };
|
char radio_fem_rxgain[8] = { 0 };
|
||||||
_prefs->getByKey("radio.fem_rxgain", radio_fem_rxgain, 7); // get initial values
|
_prefs->getByKey("fem_rxgain", radio_fem_rxgain, 7); // get initial values
|
||||||
|
|
||||||
setLoRaFemLnaEnabled(strcmp(radio_fem_rxgain, "1") == 0);
|
setLoRaFemLnaEnabled(strcmp(radio_fem_rxgain, "1") == 0);
|
||||||
}
|
}
|
||||||
@@ -158,14 +158,14 @@ bool T096Board::handleCommand(const char* command, uint32_t sender_timestamp, ch
|
|||||||
strcpy(reply, "Error: unsupported");
|
strcpy(reply, "Error: unsupported");
|
||||||
} else if (memcmp(&command[21], "on", 2) == 0) {
|
} else if (memcmp(&command[21], "on", 2) == 0) {
|
||||||
if (setLoRaFemLnaEnabled(true)) {
|
if (setLoRaFemLnaEnabled(true)) {
|
||||||
_prefs->setByKey("radio.fem_rxgain", "1");
|
_prefs->setByKey("fem_rxgain", "1");
|
||||||
strcpy(reply, "OK - LoRa FEM RX gain on");
|
strcpy(reply, "OK - LoRa FEM RX gain on");
|
||||||
} else {
|
} else {
|
||||||
strcpy(reply, "Error: failed to apply LoRa FEM RX gain");
|
strcpy(reply, "Error: failed to apply LoRa FEM RX gain");
|
||||||
}
|
}
|
||||||
} else if (memcmp(&command[21], "off", 3) == 0) {
|
} else if (memcmp(&command[21], "off", 3) == 0) {
|
||||||
if (setLoRaFemLnaEnabled(false)) {
|
if (setLoRaFemLnaEnabled(false)) {
|
||||||
_prefs->setByKey("radio.fem_rxgain", "0");
|
_prefs->setByKey("fem_rxgain", "0");
|
||||||
strcpy(reply, "OK - LoRa FEM RX gain off");
|
strcpy(reply, "OK - LoRa FEM RX gain off");
|
||||||
} else {
|
} else {
|
||||||
strcpy(reply, "Error: failed to apply LoRa FEM RX gain");
|
strcpy(reply, "Error: failed to apply LoRa FEM RX gain");
|
||||||
|
|||||||
@@ -26,12 +26,11 @@ public:
|
|||||||
T096Board() :periph_power(PIN_VEXT_EN,PIN_VEXT_EN_ACTIVE), NRF52Board("T096_OTA") {}
|
T096Board() :periph_power(PIN_VEXT_EN,PIN_VEXT_EN_ACTIVE), NRF52Board("T096_OTA") {}
|
||||||
void begin();
|
void begin();
|
||||||
void attachDynamicPrefs(KeyValueStore* prefs);
|
void attachDynamicPrefs(KeyValueStore* prefs);
|
||||||
|
bool handleCommand(const char* command, uint32_t sender_timestamp, char* reply) override;
|
||||||
|
|
||||||
void onBeforeTransmit(void) override;
|
void onBeforeTransmit(void) override;
|
||||||
void onAfterTransmit(void) override;
|
void onAfterTransmit(void) override;
|
||||||
uint16_t getBattMilliVolts() override;
|
uint16_t getBattMilliVolts() override;
|
||||||
const char* getManufacturerName() const override ;
|
const char* getManufacturerName() const override ;
|
||||||
void powerOff() override;
|
void powerOff() override;
|
||||||
|
|
||||||
bool handleCommand(const char* command, uint32_t sender_timestamp, char* reply) override;
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -72,10 +72,50 @@ void HeltecTrackerV2Board::begin() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HeltecTrackerV2Board::canControlLoRaFemLna() const {
|
|
||||||
return loRaFEMControl.isLnaCanControl();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool HeltecTrackerV2Board::isLoRaFemLnaEnabled() const {
|
bool HeltecTrackerV2Board::isLoRaFemLnaEnabled() const {
|
||||||
return loRaFEMControl.isLNAEnabled();
|
return loRaFEMControl.isLNAEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HeltecTrackerV2Board::attachDynamicPrefs(KeyValueStore* prefs) {
|
||||||
|
_prefs = prefs;
|
||||||
|
|
||||||
|
char radio_fem_rxgain[8] = { 0 };
|
||||||
|
_prefs->getByKey("fem_rxgain", radio_fem_rxgain, 7); // get initial values
|
||||||
|
|
||||||
|
setLoRaFemLnaEnabled(strcmp(radio_fem_rxgain, "1") == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool HeltecTrackerV2Board::handleCommand(const char* command, uint32_t sender_timestamp, char* reply) {
|
||||||
|
if (strcmp(command, "get radio.fem.rxgain") == 0) {
|
||||||
|
if (!loRaFEMControl.isLnaCanControl()) {
|
||||||
|
strcpy(reply, "Error: unsupported");
|
||||||
|
} else {
|
||||||
|
sprintf(reply, "> %s", isLoRaFemLnaEnabled() ? "on" : "off");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (memcmp(command, "set radio.fem.rxgain ", 21) == 0) {
|
||||||
|
if (!loRaFEMControl.isLnaCanControl()) {
|
||||||
|
strcpy(reply, "Error: unsupported");
|
||||||
|
} else if (memcmp(&command[21], "on", 2) == 0) {
|
||||||
|
if (setLoRaFemLnaEnabled(true)) {
|
||||||
|
_prefs->setByKey("fem_rxgain", "1");
|
||||||
|
strcpy(reply, "OK - LoRa FEM RX gain on");
|
||||||
|
} else {
|
||||||
|
strcpy(reply, "Error: failed to apply LoRa FEM RX gain");
|
||||||
|
}
|
||||||
|
} else if (memcmp(&command[21], "off", 3) == 0) {
|
||||||
|
if (setLoRaFemLnaEnabled(false)) {
|
||||||
|
_prefs->setByKey("fem_rxgain", "0");
|
||||||
|
strcpy(reply, "OK - LoRa FEM RX gain off");
|
||||||
|
} else {
|
||||||
|
strcpy(reply, "Error: failed to apply LoRa FEM RX gain");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
strcpy(reply, "Error: state must be on or off");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false; // not handled
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,6 +6,10 @@
|
|||||||
#include "LoRaFEMControl.h"
|
#include "LoRaFEMControl.h"
|
||||||
|
|
||||||
class HeltecTrackerV2Board : public ESP32Board {
|
class HeltecTrackerV2Board : public ESP32Board {
|
||||||
|
KeyValueStore* _prefs = NULL;
|
||||||
|
|
||||||
|
bool setLoRaFemLnaEnabled(bool enable);
|
||||||
|
bool isLoRaFemLnaEnabled() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RefCountedDigitalPin periph_power;
|
RefCountedDigitalPin periph_power;
|
||||||
@@ -14,13 +18,13 @@ public:
|
|||||||
HeltecTrackerV2Board() : periph_power(PIN_VEXT_EN,PIN_VEXT_EN_ACTIVE) { }
|
HeltecTrackerV2Board() : periph_power(PIN_VEXT_EN,PIN_VEXT_EN_ACTIVE) { }
|
||||||
|
|
||||||
void begin();
|
void begin();
|
||||||
|
void attachDynamicPrefs(KeyValueStore* prefs);
|
||||||
|
bool handleCommand(const char* command, uint32_t sender_timestamp, char* reply) override;
|
||||||
|
|
||||||
void onBeforeTransmit(void) override;
|
void onBeforeTransmit(void) override;
|
||||||
void onAfterTransmit(void) override;
|
void onAfterTransmit(void) override;
|
||||||
void powerOff() override;
|
void powerOff() override;
|
||||||
uint16_t getBattMilliVolts() override;
|
uint16_t getBattMilliVolts() override;
|
||||||
const char* getManufacturerName() const override ;
|
const char* getManufacturerName() const override ;
|
||||||
bool setLoRaFemLnaEnabled(bool enable) override;
|
|
||||||
bool canControlLoRaFemLna() const override;
|
|
||||||
bool isLoRaFemLnaEnabled() const override;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -73,10 +73,50 @@ void HeltecV4Board::begin() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HeltecV4Board::canControlLoRaFemLna() const {
|
|
||||||
return loRaFEMControl.isLnaCanControl();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool HeltecV4Board::isLoRaFemLnaEnabled() const {
|
bool HeltecV4Board::isLoRaFemLnaEnabled() const {
|
||||||
return loRaFEMControl.isLNAEnabled();
|
return loRaFEMControl.isLNAEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HeltecV4Board::attachDynamicPrefs(KeyValueStore* prefs) {
|
||||||
|
_prefs = prefs;
|
||||||
|
|
||||||
|
char radio_fem_rxgain[8] = { 0 };
|
||||||
|
_prefs->getByKey("fem_rxgain", radio_fem_rxgain, 7); // get initial values
|
||||||
|
|
||||||
|
setLoRaFemLnaEnabled(strcmp(radio_fem_rxgain, "1") == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool HeltecV4Board::handleCommand(const char* command, uint32_t sender_timestamp, char* reply) {
|
||||||
|
if (strcmp(command, "get radio.fem.rxgain") == 0) {
|
||||||
|
if (!loRaFEMControl.isLnaCanControl()) {
|
||||||
|
strcpy(reply, "Error: unsupported");
|
||||||
|
} else {
|
||||||
|
sprintf(reply, "> %s", isLoRaFemLnaEnabled() ? "on" : "off");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (memcmp(command, "set radio.fem.rxgain ", 21) == 0) {
|
||||||
|
if (!loRaFEMControl.isLnaCanControl()) {
|
||||||
|
strcpy(reply, "Error: unsupported");
|
||||||
|
} else if (memcmp(&command[21], "on", 2) == 0) {
|
||||||
|
if (setLoRaFemLnaEnabled(true)) {
|
||||||
|
_prefs->setByKey("fem_rxgain", "1");
|
||||||
|
strcpy(reply, "OK - LoRa FEM RX gain on");
|
||||||
|
} else {
|
||||||
|
strcpy(reply, "Error: failed to apply LoRa FEM RX gain");
|
||||||
|
}
|
||||||
|
} else if (memcmp(&command[21], "off", 3) == 0) {
|
||||||
|
if (setLoRaFemLnaEnabled(false)) {
|
||||||
|
_prefs->setByKey("fem_rxgain", "0");
|
||||||
|
strcpy(reply, "OK - LoRa FEM RX gain off");
|
||||||
|
} else {
|
||||||
|
strcpy(reply, "Error: failed to apply LoRa FEM RX gain");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
strcpy(reply, "Error: state must be on or off");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false; // not handled
|
||||||
|
}
|
||||||
|
|||||||
@@ -10,6 +10,10 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
class HeltecV4Board : public ESP32Board {
|
class HeltecV4Board : public ESP32Board {
|
||||||
|
KeyValueStore* _prefs = NULL;
|
||||||
|
|
||||||
|
bool setLoRaFemLnaEnabled(bool enable);
|
||||||
|
bool isLoRaFemLnaEnabled() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
float adc_mult = ADC_MULTIPLIER;
|
float adc_mult = ADC_MULTIPLIER;
|
||||||
@@ -20,12 +24,12 @@ public:
|
|||||||
HeltecV4Board() : periph_power(PIN_VEXT_EN,PIN_VEXT_EN_ACTIVE) { }
|
HeltecV4Board() : periph_power(PIN_VEXT_EN,PIN_VEXT_EN_ACTIVE) { }
|
||||||
|
|
||||||
void begin();
|
void begin();
|
||||||
|
void attachDynamicPrefs(KeyValueStore* prefs);
|
||||||
|
bool handleCommand(const char* command, uint32_t sender_timestamp, char* reply) override;
|
||||||
|
|
||||||
void onBeforeTransmit(void) override;
|
void onBeforeTransmit(void) override;
|
||||||
void onAfterTransmit(void) override;
|
void onAfterTransmit(void) override;
|
||||||
void powerOff() override;
|
void powerOff() override;
|
||||||
bool setLoRaFemLnaEnabled(bool enable) override;
|
|
||||||
bool canControlLoRaFemLna() const override;
|
|
||||||
bool isLoRaFemLnaEnabled() const override;
|
|
||||||
uint16_t getBattMilliVolts() override;
|
uint16_t getBattMilliVolts() override;
|
||||||
bool setAdcMultiplier(float multiplier) override {
|
bool setAdcMultiplier(float multiplier) override {
|
||||||
if (multiplier == 0.0f) {
|
if (multiplier == 0.0f) {
|
||||||
|
|||||||
Reference in New Issue
Block a user