mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
companion: Suspend radio when hibernating
This should significantly reduce power consumption in hibernation. Fixes: #1014 Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com> Signed-off-by: Frieder Schrempf <frieder@fris.de> # generalize for all radios and UIs
This commit is contained in:
parent
f5a56c537f
commit
07e7e2d44b
4 changed files with 9 additions and 2 deletions
|
|
@ -650,6 +650,7 @@ void UITask::shutdown(bool restart){
|
||||||
_board->reboot();
|
_board->reboot();
|
||||||
} else {
|
} else {
|
||||||
_display->turnOff();
|
_display->turnOff();
|
||||||
|
radio_driver.powerOff();
|
||||||
_board->powerOff();
|
_board->powerOff();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -292,10 +292,12 @@ void UITask::shutdown(bool restart){
|
||||||
|
|
||||||
#endif // PIN_BUZZER
|
#endif // PIN_BUZZER
|
||||||
|
|
||||||
if (restart)
|
if (restart) {
|
||||||
_board->reboot();
|
_board->reboot();
|
||||||
else
|
} else {
|
||||||
|
radio_driver.powerOff();
|
||||||
_board->powerOff();
|
_board->powerOff();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITask::loop() {
|
void UITask::loop() {
|
||||||
|
|
|
||||||
|
|
@ -19,4 +19,7 @@ public:
|
||||||
int sf = ((CustomSX1262 *)_radio)->spreadingFactor;
|
int sf = ((CustomSX1262 *)_radio)->spreadingFactor;
|
||||||
return packetScoreInt(snr, sf, packet_len);
|
return packetScoreInt(snr, sf, packet_len);
|
||||||
}
|
}
|
||||||
|
virtual void powerOff() override {
|
||||||
|
((CustomSX1262 *)_radio)->sleep(false);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ public:
|
||||||
RadioLibWrapper(PhysicalLayer& radio, mesh::MainBoard& board) : _radio(&radio), _board(&board) { n_recv = n_sent = 0; }
|
RadioLibWrapper(PhysicalLayer& radio, mesh::MainBoard& board) : _radio(&radio), _board(&board) { n_recv = n_sent = 0; }
|
||||||
|
|
||||||
void begin() override;
|
void begin() override;
|
||||||
|
virtual void powerOff() { _radio->sleep(); }
|
||||||
int recvRaw(uint8_t* bytes, int sz) override;
|
int recvRaw(uint8_t* bytes, int sz) override;
|
||||||
uint32_t getEstAirtimeFor(int len_bytes) override;
|
uint32_t getEstAirtimeFor(int len_bytes) override;
|
||||||
bool startSendRaw(const uint8_t* bytes, int len) override;
|
bool startSendRaw(const uint8_t* bytes, int len) override;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue