1
0
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:
Anders
2020-03-05 15:30:20 +01:00
parent a49f047096
commit 16801f3dac
38 changed files with 924 additions and 679 deletions

View File

@ -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