tweaks get/set adcMultiplier logic
This commit is contained in:
@@ -42,8 +42,8 @@ namespace mesh {
|
|||||||
class MainBoard {
|
class MainBoard {
|
||||||
public:
|
public:
|
||||||
virtual uint16_t getBattMilliVolts() = 0;
|
virtual uint16_t getBattMilliVolts() = 0;
|
||||||
virtual void setAdcMultiplier(float multiplier) {};
|
virtual bool setAdcMultiplier(float multiplier) { return false; };
|
||||||
virtual float getAdcMultiplier() const { return 1.0f; }
|
virtual float getAdcMultiplier() const { return 0.0f; }
|
||||||
virtual const char* getManufacturerName() const = 0;
|
virtual const char* getManufacturerName() const = 0;
|
||||||
virtual void onBeforeTransmit() { }
|
virtual void onBeforeTransmit() { }
|
||||||
virtual void onAfterTransmit() { }
|
virtual void onAfterTransmit() { }
|
||||||
|
|||||||
@@ -335,7 +335,12 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch
|
|||||||
sprintf(reply, "> %s", _prefs->bridge_secret);
|
sprintf(reply, "> %s", _prefs->bridge_secret);
|
||||||
#endif
|
#endif
|
||||||
} else if (memcmp(config, "adc.multiplier", 14) == 0) {
|
} else if (memcmp(config, "adc.multiplier", 14) == 0) {
|
||||||
sprintf(reply, "> %s", StrHelper::ftoa(_prefs->adc_multiplier));
|
float adc_mult = _board->getAdcMultiplier();
|
||||||
|
if (adc_mult == 0.0f) {
|
||||||
|
strcpy(reply, "Error: unsupported by this board");
|
||||||
|
} else {
|
||||||
|
sprintf(reply, "> %.3f", adc_mult);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
sprintf(reply, "??: %s", config);
|
sprintf(reply, "??: %s", config);
|
||||||
}
|
}
|
||||||
@@ -530,9 +535,17 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch
|
|||||||
#endif
|
#endif
|
||||||
} else if (memcmp(config, "adc.multiplier ", 15) == 0) {
|
} else if (memcmp(config, "adc.multiplier ", 15) == 0) {
|
||||||
_prefs->adc_multiplier = atof(&config[15]);
|
_prefs->adc_multiplier = atof(&config[15]);
|
||||||
_board->setAdcMultiplier(_prefs->adc_multiplier);
|
if (_board->setAdcMultiplier(_prefs->adc_multiplier)) {
|
||||||
savePrefs();
|
savePrefs();
|
||||||
strcpy(reply, "OK");
|
if (_prefs->adc_multiplier == 0.0f) {
|
||||||
|
strcpy(reply, "OK - using default board multiplier");
|
||||||
|
} else {
|
||||||
|
sprintf(reply, "OK - multiplier set to %.3f", _prefs->adc_multiplier);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
_prefs->adc_multiplier = 0.0f;
|
||||||
|
strcpy(reply, "Error: unsupported by this board");
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
sprintf(reply, "unknown config: %s", config);
|
sprintf(reply, "unknown config: %s", config);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,15 +43,20 @@ public:
|
|||||||
return (adc_mult * raw);
|
return (adc_mult * raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setAdcMultiplier(float multiplier) override {
|
bool setAdcMultiplier(float multiplier) override {
|
||||||
if (multiplier == 0.0f) {
|
if (multiplier == 0.0f) {
|
||||||
adc_mult = ADC_MULTIPLIER;}
|
adc_mult = ADC_MULTIPLIER;}
|
||||||
else {
|
else {
|
||||||
adc_mult = multiplier;
|
adc_mult = multiplier;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
float getAdcMultiplier() const override {
|
float getAdcMultiplier() const override {
|
||||||
return adc_mult;
|
if (adc_mult == 0.0f) {
|
||||||
|
return ADC_MULTIPLIER;
|
||||||
|
} else {
|
||||||
|
return adc_mult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* getManufacturerName() const override {
|
const char* getManufacturerName() const override {
|
||||||
|
|||||||
Reference in New Issue
Block a user