xref: /openbmc/phosphor-led-manager/manager/serialize.hpp (revision 953315d272bec972252fc8bb1cd393f03ac56be8)
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