1*953315d2SPatrick Williams #pragma once 2*953315d2SPatrick Williams 3*953315d2SPatrick Williams #include <filesystem> 4*953315d2SPatrick Williams #include <fstream> 5*953315d2SPatrick Williams #include <set> 6*953315d2SPatrick Williams #include <string> 7*953315d2SPatrick Williams 8*953315d2SPatrick Williams namespace phosphor 9*953315d2SPatrick Williams { 10*953315d2SPatrick Williams namespace led 11*953315d2SPatrick Williams { 12*953315d2SPatrick Williams 13*953315d2SPatrick Williams namespace fs = std::filesystem; 14*953315d2SPatrick Williams 15*953315d2SPatrick Williams // the set of names of asserted groups, which contains the D-Bus Object path 16*953315d2SPatrick Williams using SavedGroups = std::set<std::string>; 17*953315d2SPatrick Williams 18*953315d2SPatrick Williams /** @class Serialize 19*953315d2SPatrick Williams * @brief Store and restore groups of LEDs 20*953315d2SPatrick Williams */ 21*953315d2SPatrick Williams class Serialize 22*953315d2SPatrick Williams { 23*953315d2SPatrick Williams public: Serialize(const fs::path & path)24*953315d2SPatrick Williams explicit Serialize(const fs::path& path) : path(path) 25*953315d2SPatrick Williams { 26*953315d2SPatrick Williams restoreGroups(); 27*953315d2SPatrick Williams } 28*953315d2SPatrick Williams 29*953315d2SPatrick Williams /** @brief Store asserted group names to SAVED_GROUPS_FILE 30*953315d2SPatrick Williams * 31*953315d2SPatrick Williams * @param [in] group - name of the group 32*953315d2SPatrick Williams * @param [in] asserted - asserted state, true or false 33*953315d2SPatrick Williams */ 34*953315d2SPatrick Williams void storeGroups(const std::string& group, bool asserted); 35*953315d2SPatrick Williams 36*953315d2SPatrick Williams /** @brief Is the group in asserted state stored in SAVED_GROUPS_FILE 37*953315d2SPatrick Williams * 38*953315d2SPatrick Williams * @param [in] objPath - The D-Bus path that hosts LED group 39*953315d2SPatrick Williams * 40*953315d2SPatrick Williams * @return - true: exist, false: does not exist 41*953315d2SPatrick Williams */ 42*953315d2SPatrick Williams bool getGroupSavedState(const std::string& objPath) const; 43*953315d2SPatrick Williams 44*953315d2SPatrick Williams private: 45*953315d2SPatrick Williams /** @brief restore asserted group names from SAVED_GROUPS_FILE 46*953315d2SPatrick Williams */ 47*953315d2SPatrick Williams void restoreGroups(); 48*953315d2SPatrick Williams 49*953315d2SPatrick Williams /** @brief the set of names of asserted groups */ 50*953315d2SPatrick Williams SavedGroups savedGroups; 51*953315d2SPatrick Williams 52*953315d2SPatrick Williams /** @brief the path of file for storing the names of asserted groups */ 53*953315d2SPatrick Williams fs::path path; 54*953315d2SPatrick Williams }; 55*953315d2SPatrick Williams 56*953315d2SPatrick Williams } // namespace led 57*953315d2SPatrick Williams } // namespace phosphor 58