Port the guarded NMEA buffer, validated RMC clock samples and coordinate bounds from meshcore-dev/MeshCore#3624, #3625 and #3626. Adapt clock admission to retain this branch's signed date limits, bounded loop work, tracker acquisitions, sample consumption, diagnostics and periodic settings. Upstream-PR: https://github.com/meshcore-dev/MeshCore/pull/3624 Upstream-Commit: 1ac389bbef0084623a3115c526156ae8f414d3ea Upstream-PR: https://github.com/meshcore-dev/MeshCore/pull/3625 Upstream-Commit: 72ed4dcf08869c6900ef579e7af1b28471a86895 Upstream-PR: https://github.com/meshcore-dev/MeshCore/pull/3626 Upstream-Commit: 499727a71c564a7b5d451b8f480d940e185fe742 Co-authored-by: nullrouten0 <201262769+nullrouten0@users.noreply.github.com>
61 lines
1.8 KiB
C++
61 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <RadioProfiles.h>
|
|
|
|
namespace mesh {
|
|
|
|
enum class RadioParamApplyResult : uint8_t {
|
|
APPLIED,
|
|
BUSY,
|
|
FAILED
|
|
};
|
|
|
|
class Radio {
|
|
public:
|
|
virtual ~Radio() = default;
|
|
virtual RadioProfiles* profiles() { return nullptr; }
|
|
virtual const RadioProfiles* profiles() const { return nullptr; }
|
|
virtual bool validateProfile(const RadioProfileParams&) const { return false; }
|
|
virtual bool supportsEthernetTunnel() const { return false; }
|
|
virtual uint8_t receiveProfile() const { return 0; }
|
|
virtual uint32_t receiveProfileGeneration() const {
|
|
const RadioProfiles* p = profiles();
|
|
return p ? p->generation[receiveProfile()] : 0;
|
|
}
|
|
virtual RadioParamApplyResult prepareTransmitProfile(uint8_t profile) {
|
|
return profile == 0 ? RadioParamApplyResult::APPLIED : RadioParamApplyResult::FAILED;
|
|
}
|
|
virtual RadioParamApplyResult trySetPrimaryParams(const RadioProfileParams&,
|
|
bool, const uint32_t* = nullptr) {
|
|
return RadioParamApplyResult::FAILED;
|
|
}
|
|
virtual bool isReceiving() { return false; }
|
|
virtual uint32_t getEstAirtimeFor(uint16_t) { return 10; }
|
|
virtual uint32_t getProfileAirtime(uint8_t, int len, uint8_t = 0) {
|
|
return getEstAirtimeFor((uint16_t)len);
|
|
}
|
|
virtual bool startSendRaw(const uint8_t*, uint16_t) { return true; }
|
|
virtual bool isSendComplete() { return true; }
|
|
virtual void onSendFinished() {}
|
|
virtual int16_t getNoiseFloor() { return -120; }
|
|
};
|
|
|
|
class RTCClock {
|
|
public:
|
|
virtual ~RTCClock() = default;
|
|
virtual uint32_t getCurrentTime() = 0;
|
|
virtual void setCurrentTime(uint32_t time) = 0;
|
|
};
|
|
|
|
class MainBoard {
|
|
public:
|
|
virtual ~MainBoard() = default;
|
|
virtual uint16_t getBattMilliVolts() { return 4200; }
|
|
virtual float getMCUTemperature() { return 25.0f; }
|
|
virtual const char* getManufacturerName() { return "mock-board"; }
|
|
virtual void reboot() {}
|
|
};
|
|
|
|
}
|