Skip to content

Commit fc93d84

Browse files
committed
tweaks get/set adcMultiplier logic
1 parent e13c064 commit fc93d84

File tree

3 files changed

+26
-8
lines changed

3 files changed

+26
-8
lines changed

src/MeshCore.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ namespace mesh {
4242
class MainBoard {
4343
public:
4444
virtual uint16_t getBattMilliVolts() = 0;
45-
virtual void setAdcMultiplier(float multiplier) {};
46-
virtual float getAdcMultiplier() const { return 1.0f; }
45+
virtual bool setAdcMultiplier(float multiplier) { return false; };
46+
virtual float getAdcMultiplier() const { return 0.0f; }
4747
virtual const char* getManufacturerName() const = 0;
4848
virtual void onBeforeTransmit() { }
4949
virtual void onAfterTransmit() { }

src/helpers/CommonCLI.cpp

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,12 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch
335335
sprintf(reply, "> %s", _prefs->bridge_secret);
336336
#endif
337337
} else if (memcmp(config, "adc.multiplier", 14) == 0) {
338-
sprintf(reply, "> %s", StrHelper::ftoa(_prefs->adc_multiplier));
338+
float adc_mult = _board->getAdcMultiplier();
339+
if (adc_mult == 0.0f) {
340+
strcpy(reply, "Error: unsupported by this board");
341+
} else {
342+
sprintf(reply, "> %.3f", adc_mult);
343+
}
339344
} else {
340345
sprintf(reply, "??: %s", config);
341346
}
@@ -530,9 +535,17 @@ void CommonCLI::handleCommand(uint32_t sender_timestamp, const char* command, ch
530535
#endif
531536
} else if (memcmp(config, "adc.multiplier ", 15) == 0) {
532537
_prefs->adc_multiplier = atof(&config[15]);
533-
_board->setAdcMultiplier(_prefs->adc_multiplier);
534-
savePrefs();
535-
strcpy(reply, "OK");
538+
if (_board->setAdcMultiplier(_prefs->adc_multiplier)) {
539+
savePrefs();
540+
if (_prefs->adc_multiplier == 0.0f) {
541+
strcpy(reply, "OK - using default board multiplier");
542+
} else {
543+
sprintf(reply, "OK - multiplier set to %.3f", _prefs->adc_multiplier);
544+
}
545+
} else {
546+
_prefs->adc_multiplier = 0.0f;
547+
strcpy(reply, "Error: unsupported by this board");
548+
};
536549
} else {
537550
sprintf(reply, "unknown config: %s", config);
538551
}

variants/promicro/PromicroBoard.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,20 @@ class PromicroBoard : public mesh::MainBoard {
4343
return (adc_mult * raw);
4444
}
4545

46-
void setAdcMultiplier(float multiplier) override {
46+
bool setAdcMultiplier(float multiplier) override {
4747
if (multiplier == 0.0f) {
4848
adc_mult = ADC_MULTIPLIER;}
4949
else {
5050
adc_mult = multiplier;
5151
}
52+
return true;
5253
}
5354
float getAdcMultiplier() const override {
54-
return adc_mult;
55+
if (adc_mult == 0.0f) {
56+
return ADC_MULTIPLIER;
57+
} else {
58+
return adc_mult;
59+
}
5560
}
5661

5762
const char* getManufacturerName() const override {

0 commit comments

Comments
 (0)