FlashProtector
data
data/FlashProtector.h
data
Méthodes publiques
| Méthode | Description | Paramètres | Retour |
|---|---|---|---|
|
getInstance()
getInstance();
|
|||
|
begin()
begin();
|
|||
|
checkWrite()
checkWrite(const String& key, uint16_t dataSize);
|
|||
|
recordWrite()
recordWrite(const String& key, uint16_t dataSize);
|
|||
|
getDailyWrites()
getDailyWrites() const {
|
|||
|
getHourlyWrites()
getHourlyWrites() const {
|
|||
|
getMinuteWrites()
getMinuteWrites() const {
|
|||
|
isDegradedMode()
isDegradedMode() const {
|
|||
|
setLimits()
setLimits(const Limits& newLimits);
|
|||
|
getLimits()
getLimits() const;
|
|||
|
getStats()
getStats() const;
|
|||
|
getStatsJson()
getStatsJson() const;
|
|||
|
resetCounters()
resetCounters();
|
|||
|
clearRecords()
clearRecords();
|
|||
|
enableDegradedMode()
enableDegradedMode(bool enable);
|
|||
|
update()
update();
|
|||
|
checkHealth()
checkHealth();
|
|||
|
enableAlerts()
enableAlerts(bool enable);
|
|||
|
sendAlert()
sendAlert(const String& message);
|
|||
|
printStatus()
printStatus();
|
|||
|
printDetailedReport()
printDetailedReport();
|
|||
|
saveState()
saveState();
|
|||
|
loadState()
loadState();
|
Méthodes privées
FlashProtector();;
Variables membres
String key;
uint32_t timestamp;
uint16_t count;
uint32_t totalSize;
uint8_t recordCount;
uint32_t totalWritesToday;
uint32_t writesThisHour;
uint32_t writesThisMinute;
uint32_t lastDailyReset;
uint32_t lastHourlyReset;
uint32_t lastMinuteReset;
bool alertsEnabled;
uint32_t lastAlertTime;
bool degradedMode;
uint32_t degradedSince;
return totalWritesToday;
return writesThisHour;
return writesThisMinute;
return degradedMode;
uint32_t totalWrites;
uint32_t blockedWrites;
uint32_t delayedWrites;
uint32_t degradedTime;
uint32_t mostFrequentKeyWrites;
String mostFrequentKey;
float writeFrequency;
Limits currentLimits;
Code source
// // utils/FlashProtector.h
// #pragma once
// #include <Arduino.h>
// #include "Settings.h"
// namespace crepp::data {
// class FlashProtector {
// private:
// static FlashProtector* instance;
// struct WriteRecord {
// String key;
// uint32_t timestamp;
// uint16_t count;
// uint32_t totalSize;
// };
// // Statistiques d'écriture
// WriteRecord records[50];
// uint8_t recordCount;
// // Limites de sécurité
// uint32_t totalWritesToday;
// uint32_t writesThisHour;
// uint32_t writesThisMinute;
// uint32_t lastDailyReset;
// uint32_t lastHourlyReset;
// uint32_t lastMinuteReset;
// // Alertes
// bool alertsEnabled;
// uint32_t lastAlertTime;
// // Mode dégradé
// bool degradedMode;
// uint32_t degradedSince;
// // Constructeur privé (singleton)
// FlashProtector();
// public:
// // Singleton
// static FlashProtector& getInstance();
// // Initialisation
// void begin();
// // Vérification avant écriture
// enum CheckResult {
// ALLOW_WRITE = 0,
// DELAY_WRITE = 1,
// BLOCK_WRITE = 2,
// DEGRADED_MODE = 3
// };
// CheckResult checkWrite(const String& key, uint16_t dataSize);
// // Enregistrer une écriture réussie
// void recordWrite(const String& key, uint16_t dataSize);
// // Getters
// uint32_t getDailyWrites() const { return totalWritesToday; }
// uint32_t getHourlyWrites() const { return writesThisHour; }
// uint32_t getMinuteWrites() const { return writesThisMinute; }
// bool isDegradedMode() const { return degradedMode; }
// // Configuration des limites
// struct Limits {
// uint32_t maxDailyWrites = 1000; // 1000 écritures/jour
// uint32_t maxHourlyWrites = 100; // 100 écritures/heure
// uint32_t maxMinuteWrites = 10; // 10 écritures/minute
// uint32_t minWriteInterval = 1000; // 1 seconde entre écritures
// uint32_t maxWriteSize = 1024; // 1KB max par écriture
// uint32_t recoveryTime = 3600000; // 1 heure en mode dégradé
// };
// void setLimits(const Limits& newLimits);
// Limits getLimits() const;
// // Statistiques
// struct Stats {
// uint32_t totalWrites;
// uint32_t blockedWrites;
// uint32_t delayedWrites;
// uint32_t degradedTime;
// uint32_t mostFrequentKeyWrites;
// String mostFrequentKey;
// float writeFrequency; // écritures/minute
// };
// Stats getStats() const;
// String getStatsJson() const;
// // Maintenance
// void resetCounters();
// void clearRecords();
// void enableDegradedMode(bool enable);
// // Monitoring
// void update();
// void checkHealth();
// // Alertes
// void enableAlerts(bool enable);
// void sendAlert(const String& message);
// // Logging
// void printStatus();
// void printDetailedReport();
// // Export/Import
// bool saveState();
// bool loadState();
// private:
// // Méthodes internes
// void updateTimeCounters();
// WriteRecord* findOrCreateRecord(const String& key);
// bool isKeyOverLimit(const WriteRecord& record) const;
// uint32_t calculateWaitTime(const WriteRecord& record) const;
// void checkForDegradedMode();
// void enterDegradedMode();
// void exitDegradedMode();
// // Configuration
// Limits currentLimits;
// // Utilitaires
// String formatTime(uint32_t ms) const;
// float calculateWearLevel() const;
// };
// } // namespace crepp::utils