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
이 커밋은 다음에 포함됨:
Jaroslav Škarvada
2025-11-22 15:05:01 +01:00
커밋한 사람 Frieder Schrempf
부모 f5a56c537f
커밋 07e7e2d44b
4개의 변경된 파일9개의 추가작업 그리고 2개의 파일을 삭제
+1
파일 보기
@@ -650,6 +650,7 @@ void UITask::shutdown(bool restart){
_board->reboot();
} else {
_display->turnOff();
radio_driver.powerOff();
_board->powerOff();
}
}
+4 -2
파일 보기
@@ -292,10 +292,12 @@ void UITask::shutdown(bool restart){
#endif // PIN_BUZZER
if (restart)
if (restart) {
_board->reboot();
else
} else {
radio_driver.powerOff();
_board->powerOff();
}
}
void UITask::loop() {
+3
파일 보기
@@ -19,4 +19,7 @@ public:
int sf = ((CustomSX1262 *)_radio)->spreadingFactor;
return packetScoreInt(snr, sf, packet_len);
}
virtual void powerOff() override {
((CustomSX1262 *)_radio)->sleep(false);
}
};
+1
파일 보기
@@ -21,6 +21,7 @@ public:
RadioLibWrapper(PhysicalLayer& radio, mesh::MainBoard& board) : _radio(&radio), _board(&board) { n_recv = n_sent = 0; }
void begin() override;
virtual void powerOff() { _radio->sleep(); }
int recvRaw(uint8_t* bytes, int sz) override;
uint32_t getEstAirtimeFor(int len_bytes) override;
bool startSendRaw(const uint8_t* bytes, int len) override;