mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-15 00:02:49 +03:00
- Rework ExpiringTimeTracker to be based on PolledTimeout.
- Ensure espnowDelay and floodingMeshDelay always performs maintenance. - Rework MutexTracker to use shared_ptr. - Change enums to enum class. - Change typedef to using. - Add HeapMonitor class. - Make _messageIDs be a map instead of an unordered_map to reduce heap usage. - Use the possibly broken wifi_country ESP8266 API to check for legal WiFi channels when setting WiFi channels. - Make MessageData, RequestData and ResponseData contain a TimeTracker rather than inherit from TimeTracker. - Add deprecated attribute to TransmissionResult. - Remove superfluous elses. - Reduce cyclomatic complexity. - Change postfix ++ and -- to prefix. - Generalize getEncryptedConnectionIterator method. - Increase code NRVO compatibility. - Change _connectionAttemptTimeoutMs type from int32_t to uint32_t. - Add deprecated attribute to ESP8266WiFiMesh. - Add some constness to TypeConversionFunctions. - Move base36 arrays to PROGMEM in TypeConversionFunctions.cpp. - Add deprecated atttribute to SHA1 and MD5 hashes. - Remove _warningsEnabled in CryptoInterface since this has been replaced by the deprecated attribute. - Prefix all TypeConversion getters with "get". - Improve comments. - Fix merge conflict.
This commit is contained in:
@ -25,24 +25,54 @@
|
||||
#ifndef __EXPIRINGTIMETRACKER_H__
|
||||
#define __EXPIRINGTIMETRACKER_H__
|
||||
|
||||
#include "TimeTracker.h"
|
||||
#include <Arduino.h>
|
||||
#include <PolledTimeout.h>
|
||||
|
||||
class ExpiringTimeTracker : public TimeTracker {
|
||||
class ExpiringTimeTracker : private esp8266::polledTimeout::oneShotMs {
|
||||
|
||||
public:
|
||||
|
||||
~ExpiringTimeTracker() override = default;
|
||||
using calculatorType = std::function<uint32_t()>;
|
||||
|
||||
ExpiringTimeTracker(uint32_t duration, uint32_t creationTimeMs = millis());
|
||||
virtual ~ExpiringTimeTracker() = default;
|
||||
|
||||
ExpiringTimeTracker(const uint32_t duration, const uint32_t creationTimeMs = millis());
|
||||
ExpiringTimeTracker(const calculatorType durationCalculator, const uint32_t creationTimeMs = millis());
|
||||
|
||||
uint32_t duration() const;
|
||||
void setRemainingDuration(uint32_t remainingDuration);
|
||||
void setDuration(const uint32_t duration);
|
||||
void setDuration(const calculatorType durationCalculator);
|
||||
|
||||
uint32_t remainingDuration() const;
|
||||
|
||||
/**
|
||||
* Sets a new duration which includes the current elapsedTime(). This means elapsedTime() is not reset.
|
||||
* Note that reset() will use this new duration, including the saved elapsedTime().
|
||||
*/
|
||||
void setRemainingDuration(const uint32_t remainingDuration);
|
||||
|
||||
/**
|
||||
* Sets a new duration which includes the current elapsedTime(). This means elapsedTime() is not reset.
|
||||
* Note that reset() will use this new duration, including the saved elapsedTime().
|
||||
*/
|
||||
void setRemainingDuration(const calculatorType remainingDurationCalculator);
|
||||
|
||||
/**
|
||||
* Get the time since the ExpiringTimeTracker instance creation or the last reset(), whichever is more recent.
|
||||
*/
|
||||
uint32_t elapsedTime() const;
|
||||
bool expired() const;
|
||||
void reset();
|
||||
void reset(const uint32_t newDuration);
|
||||
void reset(const calculatorType newDurationCalculator);
|
||||
explicit operator bool() const;
|
||||
|
||||
private:
|
||||
|
||||
uint32_t _duration;
|
||||
bool useCalculator = false;
|
||||
calculatorType _durationCalculator;
|
||||
|
||||
void setTimeout(const uint32_t newUserTimeout);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user