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