2 * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
4 * This program is licensed under the terms and conditions of the
5 * Apache License, version 2.0. The full text of the Apache License is at
6 * http://www.apache.org/licenses/LICENSE-2.0
10 //==========================================================================
12 * @file CicoSystemConfig.h
14 * @brief This file is definition of CicoSystemConfig class
16 //==========================================================================
17 #ifndef __CICO_SYSTEM_CONFIG_H__
18 #define __CICO_SYSTEM_CONFIG_H__
20 #include <boost/property_tree/ptree.hpp>
21 #include <boost/property_tree/xml_parser.hpp>
22 #include <boost/foreach.hpp>
23 #include <boost/lexical_cast.hpp>
29 using namespace boost;
30 using namespace boost::property_tree;
32 //==========================================================================
33 // Forward declaration
34 //==========================================================================
35 #ifndef __CICO_SC_CONF_H__
37 class CicoSCLayerConf;
38 class CicoSCDisplayZoneConf;
39 class CicoSCDisplayConf;
40 class CicoSCSoundZoneConf;
41 class CicoSCSoundConf;
42 class CicoSCCategoryConf;
43 class CicoSCAppKindConf;
44 class CicoSCSwitchConf;
45 class CicoSCInputDevConf;
46 class CicoSCDefaultConf;
47 class CicoSCResourceConf;
49 class CicoSCVehicleInfoConf;
51 class CicoSCPositionOSConf;
54 //==========================================================================
56 * @brief This class has function of access to system config information
58 //==========================================================================
59 class CicoSystemConfig
62 static CicoSystemConfig* getInstance(void);
64 bool load(const string & confFile);
66 const vector<CicoSCNodeConf*> & getNodeConfList(void) const;
67 const vector<CicoSCDisplayConf*> & getDisplayConfList(void) const;
68 const vector<CicoSCSoundConf*> & getSoundConfList(void) const;
69 const vector<CicoSCInputDevConf*> & getInputDevConfList(void) const;
70 const vector<CicoSCCategoryConf*> & getCategoryConfList(void) const;
71 const vector<CicoSCAppKindConf*> & getAppKindConfList(void) const;
73 const CicoSCNodeConf* findNodeConfbyName(const string & name);
74 const CicoSCDisplayConf* findDisplayConfbyName(const string & name);
75 const CicoSCDisplayConf* findDisplayConfbyName(const string& ECU,
77 const CicoSCDisplayConf* findDisplayConfbyId(int id);
79 const CicoSCLayerConf* findLayerConfbyName(const string & displayName,
80 const string & layerName);
81 const CicoSCLayerConf* findLayerConfbyName(const string& ECU,
82 const string& display,
86 const CicoSCLayerConf* findLayerConfbyIdx(int displayid, int idx);
88 const CicoSCDisplayZoneConf* findDisplayZoneConfbyName(const string & displayName,
89 const string & zoneName);
90 const CicoSCSoundConf* findSoundConfbyName(const string & name);
91 const CicoSCSoundZoneConf* findSoundZoneConfbyName(const string & soundName,
92 const string & zoneName);
93 const CicoSCInputDevConf* findInputDevConfbyName(const string & name);
94 const CicoSCSwitchConf* findSwitchConfbyName(const string & inputDevName,
95 const string & switchName);
97 const CicoSCAppKindConf* findAppKindConfbyName(const string & name);
98 const CicoSCCategoryConf* findCategoryConfbyName(const string & name);
100 const CicoSCDisplayZoneConf* findDisplayZoneConfbyId(int id);
102 const CicoSCSoundZoneConf* findSoundZoneConfbyId(int id);
103 const CicoSCCategoryConf* findCategoryConfbyId(int id);
104 const CicoSCAppKindConf* findAppKindConfbyId(int id);
106 const CicoSCDefaultConf* getDefaultConf(void);
108 int getNodeIdbyName(const string & name);
109 int getDisplayIdbyName(const string & name);
110 int getDisplayIdbyNo(int no);
111 int getDisplayIdbyType(int type);
112 int getNumberofDisplay(void);
113 int getLayerIdfbyName(const string & displayName,
114 const string & layerName);
115 int getLayerIdfbyName(const string& ECU,
116 const string& display,
118 const string& layout,
120 int getDizplayZoneIdbyName(const string & displayName,
121 const string & zoneName);
122 int getDizplayZoneIdbyFullName(const string & zoneFullName);
123 int getSoundIdbyName(const string & name);
125 int getSoundZoneIdbyName(const string & soundName,
126 const string & zoneName);
127 int getSoundZoneIdbyFullName(const string & zoneFullName);
128 int getInputDevIdbyName(const string & name);
129 int getSwitchIdbyName(const string & inputDevName,
130 const string & switchName);
131 int getAppKindIdbyName(const string & name);
132 int getCategoryIdbyName(const string & name);
133 const CicoSCResourceConf* getResourceConf() const
135 return m_resourceConf;
137 const CicoSCCategoryConf* getCategoryObjbyCaategoryID(int id);
139 const CicoSCUserConf* getUserConf() const
144 CicoSCVehicleInfoConf* getVehicleInfoConf(void);
145 short getRoleStt(const string& key);
146 const CicoSCRoleConf* getRoleConf() const
150 const CicoSCPositionOSConf* positionOSConf() const
152 return m_positionOSConf;
155 // default constructor
161 // assignment operator
162 CicoSystemConfig& operator=(const CicoSystemConfig &object);
165 CicoSystemConfig(const CicoSystemConfig &object);
167 void createNodeConfList(const ptree & root);
168 void createDisplayConfList(const ptree & root);
169 void createLayoutConfContainedArea(const ptree::value_type& layout,
170 const optional<int>& layer_id,
171 const optional<string>& layer_name,
172 const optional<int>& layout_id,
173 const optional<string>& layout_name,
174 CicoSCDisplayConf* displayConf);
175 void createLayerConfContainedLayout(const ptree::value_type& layer,
176 const optional<int>& layer_id,
177 const optional<string>& layer_name,
178 CicoSCDisplayConf* displayConf);
179 void createLayerConf(const ptree::value_type & child,
180 CicoSCDisplayConf* displayConf);
181 void createDisplayZoneConf(const ptree::value_type & child,
182 CicoSCDisplayConf* displayConf);
184 void createSoundConfList(const ptree & root);
185 void createSoundZoneConf(const ptree::value_type & child,
186 CicoSCSoundConf* soundConf);
187 void createPortConf(const ptree & root);
188 void createCategoryConf(const ptree & root);
189 void createAppKindConf(const ptree & root);
190 void createInputDevList(const ptree & root);
191 void createSwitchList(const ptree::value_type & child,
192 CicoSCInputDevConf* inputDevConf);
193 void createDefaultConf(const ptree & root);
194 void createResourceConf(const ptree & root);
195 void createUserConf(const ptree & root);
196 void createVehicleInfoConf(const ptree & root);
198 int calcGeometryExpr(const string & expr, CicoSCDisplayConf* conf);
199 void createRoleConf(const ptree& root);
200 void createPositionOSConf(const ptree& root);
203 static CicoSystemConfig* ms_myInstance;
205 map<string,int> m_typeTable;
206 map<string,int> m_displayTypeTable;
207 map<string,int> m_categoryTalbe;
208 map<string,int> m_privilegeTable;
209 vector<CicoSCNodeConf*> m_nodeConfList;
210 vector<CicoSCDisplayConf*> m_displayConfList;
211 vector<CicoSCSoundConf*> m_soundConfList;
212 vector<CicoSCInputDevConf*> m_inputDevConfList;
213 vector<CicoSCCategoryConf*> m_categoryConfList;
214 vector<CicoSCAppKindConf*> m_appKindConfList;
216 int m_soundPluginPort;
217 CicoSCDefaultConf *m_defaultConf;
218 CicoSCResourceConf *m_resourceConf;
219 CicoSCUserConf *m_userConf;
220 CicoSCVehicleInfoConf *m_vehicleInfoConf;
221 CicoSCRoleConf *m_roleConf;
222 CicoSCPositionOSConf *m_positionOSConf;
225 #endif // __CICO_SYSTEM_CONFIG_H__
226 // vim:set expandtab ts=4 sw=4: