bug fix: TC-1152
[profile/ivi/ico-uxf-homescreen.git] / lib / common / CicoConf.h
1 /*
2  * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
3  *
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
7  *
8  */
9
10 //==========================================================================
11 /**
12  *  @file   CicoConf.h
13  *
14  *  @brief  This file is definition of SystemConfigs
15  */
16 //==========================================================================
17 #ifndef __CICO_CONF_H__
18 #define __CICO_CONF_H__
19
20 #include <string>
21 #include <vector>
22 #include <map>
23 #include <sstream>
24
25 #include <ico_log.h>
26 #include "CicoCommonDef.h"
27    
28 //==========================================================================
29 /**
30  *  @brief  enumeration of node type
31  */
32 //==========================================================================
33 typedef enum _node_type {
34     ICO_NODETYPE_CENTER     = 0,    ///< Center display
35     ICO_NODETYPE_METER      = 1,    ///< Meter display
36     ICO_NODETYPE_REMOTE     = 2,    ///< Information device(mobile device)
37     ICO_NODETYPE_PASSENGER  = 3,    ///< Passenger display
38     ICO_NODETYPE_REAR       = 4,    ///< Rear-seat entertainment
39     ICO_NODETYPE_REARLEFT   = 5,    ///< Rear-seat entertainment(Left)
40     ICO_NODETYPE_REARRIGHT  = 6,    ///< Rear-seat entertainment(right)
41 } ico_nodetype_e;
42
43 //==========================================================================
44 /**
45  *  @brief  enumeration of display type
46  */
47 //==========================================================================
48 typedef enum _display_type {
49     ICO_DISPLAYTYPE_CENTER    = 0,  ///< Center display
50     ICO_DISPLAYTYPE_METER     = 1,  ///< Meter display
51     ICO_DISPLAYTYPE_REMOTE    = 2,  ///< Information device(mobile device)
52     ICO_DISPLAYTYPE_PASSENGER = 3,  ///< Passenger display
53     ICO_DISPLAYTYPE_REAR      = 4,  ///< Rear-seat display
54     ICO_DISPLAYTYPE_REARLEFT  = 5,  ///< Rear-seat display(left)
55     ICO_DISPLAYTYPE_REARRIGHT = 6,  ///< Rear-seat display(right)
56 } ico_display_type_e;
57
58 //==========================================================================
59 /**
60  *  @brief  enumeration of policy type
61  */
62 //==========================================================================
63 typedef enum _policy {
64     ICO_POLICY_ALWAYS         = 0,  ///< No control
65     ICO_POLICY_RUNNING        = 1,  ///< Running only
66     ICO_POLICY_PARKED         = 2,  ///< Parked only
67     ICO_POLICY_SHIFT_PARKING  = 3,  ///< Shift-position is park
68     ICO_POLICY_SHIFT_REVERSES = 4,  ///< Shift-position is reverses
69     ICO_POLICY_BLINKER_LEFT   = 5,  ///< Blinker is left
70     ICO_POLICY_BLINKER_RIGHT  = 6,  ///< Blinker is right
71 } ico_policy_e;
72
73 //==========================================================================
74 /**
75  *  @brief  enumeration of application privilege
76  */
77 //==========================================================================
78 typedef enum _privilege {
79     ICO_PRIVILEGE_ALMIGHTY       = 0,   ///< almighty privilege
80     ICO_PRIVILEGE_SYSTEM         = 1,   ///< system level
81     ICO_PRIVILEGE_SYSTEM_AUDIO   = 2,   ///< system level(audio only)
82     ICO_PRIVILEGE_SYSTEM_VISIBLE = 3,   ///< system level(visible only)
83     ICO_PRIVILEGE_MAKER          = 4,   ///< maker level
84     ICO_PRIVILEGE_CERTIFICATE    = 5,   ///< certificated
85     ICO_PRIVILEGE_NONE           = 6,   ///< no privilege
86 } ico_privilege_e;
87
88 #define ICO_SYC_CONFIG_APPATTR  "app_attr.conf" //TODO
89
90 #define ICO_SYC_ROLE_CONF_DEF -1
91 #define ICO_SYC_ROLE_CONF_DEF_STR "DEFAULT"
92 #define ICO_SYC_ROLE_CONF_RST 14999
93 #define ICO_SYC_ROLE_CONF_RST_STR "RESET"
94
95 #define ICO_SYC_ONSCREEN_WINDOW_START_X 0
96 #define ICO_SYC_ONSCREEN_WINDOW_START_Y 0
97 #define ICO_SYC_ONSCREEN_WINDOW_WIDTH   1080
98 #define ICO_SYC_ONSCREEN_WINDOW_HEIGHT  1920
99 //==========================================================================
100 /**
101  *  @brief  This class holds display information of system config
102  */
103 //==========================================================================
104 class CicoSCNodeConf
105 {
106 public:
107     /// default constructor
108     CicoSCNodeConf()
109         : id(-1), type(-1) {}
110
111     /// destructor
112     ~CicoSCNodeConf() {}
113
114     /// dump log this class member variables
115     void dumpConf()
116     {
117         ICO_DBG("node: id=%d name=%s address=%s type=%d",
118                  id, name.c_str(), address.c_str(), type);
119     }
120
121 public:
122     int         id;      ///< node id
123     std::string name;    ///< node name
124     std::string address; ///< node ip address
125     int         type;    ///< node type
126 };
127
128 //==========================================================================
129 /**
130  *  @brief  This class holds layer information of system config
131  */
132 //==========================================================================
133 class CicoSCLayerConf
134 {
135 public:
136     /// default constructor
137     CicoSCLayerConf()
138         : id(-1), type(-1), menuoverlap(false), layout_id(-1), area_id(-1) {}
139
140     /// destructor
141     ~CicoSCLayerConf() {}
142
143     /// dump log this class member variables
144     void dumpConf()
145     {
146         if(-1 != layout_id) {
147             ICO_DBG("  layer: %d, \"%s\" type=%d menuoverlap=%s layout: %d, \"%s\" area: %d, \"%s\"",
148                     id, name.c_str(), type, menuoverlap ? "true" : "false",
149                     layout_id, layout_name.c_str(), area_id, area_name.c_str());
150         }
151         else{
152             ICO_DBG("  layer: %d, \"%s\" type=%d menuoverlap=%s",
153                     id, name.c_str(), type, menuoverlap ? "true" : "false");
154         }
155     }
156
157 public:
158     int         id;          ///< layer id
159     std::string name;        ///< layer name
160     int         type;        ///< layer type
161     bool        menuoverlap; ///< menu overlap flag
162     int         layout_id;   ///< layoyt id
163     std::string layout_name; ///< layout name
164     int         area_id;     ///< area id
165     std::string area_name;   ///< area name
166 };
167
168 //==========================================================================
169 /**
170  *  @brief  This class holds display zone information of system config
171  */
172 //==========================================================================
173 class CicoSCDisplayZoneConf
174 {
175 public:
176     /// default constructor
177     CicoSCDisplayZoneConf()
178         : id(-1), x(-1), y(-1), w(-1), h(-1),
179           aspectFixed(false), aspectAlignLeft(false),
180           aspectAlignRight(false), aspectAlignTop(false),
181           aspectAlignBottom(false) {}
182
183     /// destructor
184     ~CicoSCDisplayZoneConf() {}
185
186     /// dump log this class member variables
187     void dumpConf()
188     {
189         ICO_DBG("  zone: id=%d name=%s fullname=%s x/y=%d/%d "
190                 "w/h=%d/%d aspect(fixed=%s l/r=%s/%s t/b=%s/%s",
191                 id, name.c_str(), fullname.c_str(), x, y, w, h,
192                 aspectFixed       ? "true" : "false",
193                 aspectAlignLeft   ? "true" : "false",
194                 aspectAlignRight  ? "true" : "false",
195                 aspectAlignTop    ? "true" : "false",
196                 aspectAlignBottom ? "true" : "false");
197     }
198
199 public:
200     int               id;         ///< display zone id
201     std::string       name;       ///< display zone name
202     std::string       fullname;   ///< display zone fullname
203     int               x;          ///< display zone x position
204     int               y;          ///< display zone y position
205     int               w;          ///< display zone width
206     int               h;          ///< display zone height
207
208     /// fixed asppect ratio flag
209     bool aspectFixed;
210     /// horizontal direction to aligned at the left
211     bool aspectAlignLeft;   
212     /// horizontal direction to aligned at the right
213     bool aspectAlignRight;
214     /// vertical direction is aligned at the top
215     bool aspectAlignTop;
216     /// vertical direction is aligned at the bottom
217     bool aspectAlignBottom;
218 };
219
220 //==========================================================================
221 /**
222  *  @brief  This class holds display information of system config
223  */
224 //==========================================================================
225 class CicoSCDisplayConf
226 {
227 public:
228     /// default constructor
229     CicoSCDisplayConf()
230         : id(-1), node(-1), no(-1),
231           type(-1), width(-1), height(-1), inch(-1) {}
232
233     /// destructor
234     ~CicoSCDisplayConf() {}
235
236     /// dump log this class member variables
237     void dumpConf()
238     {
239         ICO_DBG("display: id=%d name=%s node=%d no=%d "
240                 "type=%d width=%d height=%d inch=%d",
241                 id, name.c_str(), node, no, type, width, height, inch);
242     }
243
244 public:
245     int         id;      ///< display id
246     std::string name;    ///< display name
247     int         node;    ///< display node id
248     int         no;      ///< display number
249     int         type;    ///< display type
250     int         width;   ///< display width resolution
251     int         height;  ///< display height resolution
252     int         inch;    ///< display inch size
253
254     // layer config list
255     std::vector<CicoSCLayerConf*> layerConfList;
256
257     // zone config list
258     std::vector<CicoSCDisplayZoneConf*> zoneConfList;
259 };
260
261 //==========================================================================
262 /**
263  *  @brief  This class holds sound zone information of system config
264  */
265 //==========================================================================
266 class CicoSCSoundZoneConf
267 {
268 public:
269     /// default constructor
270     CicoSCSoundZoneConf()
271         : id(-1) {}
272
273     /// destructor
274     ~CicoSCSoundZoneConf() {}
275
276     /// dump log this class member variables
277     void dumpConf()
278     {
279         ICO_DBG(" zone: id=%d name=%s fullname=%s",
280                 id, name.c_str(), fullname.c_str());
281     }
282
283 public:
284     int         id;         ///< sound zone id
285     std::string name;       ///< sound zone name
286     std::string fullname;   ///< sound zone full name
287 };
288
289 //==========================================================================
290 /**
291  *  @brief  This class holds sound information of system config
292  */
293 //==========================================================================
294 class CicoSCSoundConf
295 {
296 public:
297     /// default constructor
298     CicoSCSoundConf()
299         : id(-1), no(-1) {}
300
301     /// destructor
302     ~CicoSCSoundConf() {}
303
304     /// dump log this class member variables
305     void dumpConf()
306     {
307         ICO_DBG("sound: id=%d name=%s no=%d", id, name.c_str(), no);
308     }
309
310 public:
311     int    id;          ///< sound id
312     std::string name;   ///< sound name
313     int    no;          ///< sound number
314     std::vector<CicoSCSoundZoneConf*>  zoneConfList; ///< sound config list
315 };
316
317 //==========================================================================
318 /**
319  *  @brief  This class holds category information of system config
320  */
321 //==========================================================================
322 class CicoSCCategoryConf
323 {
324 public:
325     /// default constructor
326     CicoSCCategoryConf()
327         : id(-1), view(-1), sound(-1), input(-1), priority(0), rctrl(-1) {}
328
329     /// destructor
330     ~CicoSCCategoryConf() {}
331
332     /// dump log this class member variables
333     void dumpConf()
334     {
335         ICO_DBG("category: id=%d name=%s type=%s "
336                  "view=%d sound=%d input=%d priority=%d",
337                  id, name.c_str(), type.c_str(),
338                  view, sound, input, priority);
339     }
340
341 public:
342     int         id;         ///< category id
343     std::string name;       ///< category name
344     std::string type;       ///< category type
345     int         view;       ///< category view
346     int         sound;      ///< category sound
347     int         input;      ///< category input
348     int         priority;   ///< category priority
349     int         rctrl;      ///< resource control information
350 };
351
352 //==========================================================================
353 /**
354  *  @brief  This class holds application kind information of system config
355  */
356 //==========================================================================
357 class CicoSCAppKindConf
358 {
359 public:
360     enum _privilege {
361         PRIVILEGE_ALMIGHTY       = 0, ///< almighty privilege
362         PRIVILEGE_SYSTEM         = 1, ///< system level
363         PRIVILEGE_SYSTEM_AUDIO   = 2, ///< system level(audio only)
364         PRIVILEGE_SYSTEM_VISIBLE = 3, ///< system level(visible only)
365         PRIVILEGE_MAKER          = 4, ///< maker level
366         PRIVILEGE_CERTIFICATE    = 5, ///< certificated
367         PRIVILEGE_NONE           = 6, ///< no privilege
368     };
369
370     /// default constructor
371     CicoSCAppKindConf()
372         : id(-1), privilege(-1), priority(0){}
373
374     /// destructor
375     ~CicoSCAppKindConf() {}
376
377     /// dump log this class member variables
378     void dumpConf()
379     {
380         ICO_DBG("appkind: id=%d name=%s priority=%d priority=%d",
381                  id, name.c_str(), privilege, priority);
382     }
383
384 public:
385     int         id;         ///< application kind id
386     std::string name;       ///< application kind name
387     int         privilege;  ///< application privilege
388     int         priority;   ///< application priority
389 };
390
391 //==========================================================================
392 /**
393  *  @brief  This class holds input device switch information of system config
394  */
395 //==========================================================================
396 class CicoSCSwitchConf
397 {
398 public:
399     /// default constructor
400     CicoSCSwitchConf()
401         : id(-1), keycode(0){}
402
403     /// destructor
404     ~CicoSCSwitchConf() {}
405
406     /// dump log this class member variables
407     void dumpConf()
408     {
409         ICO_DBG("  switch: id=%d name=%s appid=%s",
410                  id, name.c_str(), appid.c_str());
411     }
412
413 public:
414     int         id;         ///< input device switch id
415     std::string name;       ///< input device switch name
416     std::string appid;      ///< fixed assign apllication name
417     int         keycode;    ///< keycode of input device switch
418 };
419
420 //==========================================================================
421 /**
422  *  @brief  This class holds input device information of system config
423  */
424 //==========================================================================
425 class CicoSCInputDevConf
426 {
427 public:
428     /// default constructor
429     CicoSCInputDevConf()
430         : id(-1) {}
431
432     /// destructor
433     ~CicoSCInputDevConf() {}
434
435     /// dump log this class member variables
436     void dumpConf()
437     {
438         ICO_DBG("inputdev: id=%d name=%s", id, name.c_str());
439     }
440
441 public:
442     int         id;     ///< input device id
443     std::string name;   ///< input device name
444     std::vector<CicoSCSwitchConf*> switchConfList;  ///< switch list
445 };
446
447 //==========================================================================
448 /**
449  *  @brief  This class holds default information of system config
450  */
451 //==========================================================================
452 class CicoSCDefaultConf
453 {
454 public:
455     /// default constructor
456     CicoSCDefaultConf()
457         : node(-1), appkind(-1), category(-1), display(-1), 
458           layer(-1), displayzone(-1), sound(-1), soundzone(-1),
459           inputdev(-1), inputsw(-1) {};
460
461     /// destructor
462     ~CicoSCDefaultConf() {}
463
464     /// dump log this class member variables
465     void dumpConf()
466     {
467         ICO_DBG("default: topdir=%s confdir=%s "
468                 "node=%d appkind=%d category=%d "
469                 "display=%d layer=%d displayzone=%d "
470                 "sound=%d soundzone=%d inputdev=%d inputsw=%d",
471                 topdir.c_str(), confdir.c_str(),
472                 node, appkind, category, display, layer, displayzone,
473                 sound, soundzone, inputdev, inputsw);
474     }
475
476 public:
477     std::string topdir;         ///< top directory path
478     std::string confdir;        ///< config directory path
479     int         node;           ///< default application node id
480     int         appkind;        ///< default application kind
481     int         category;       ///< default application category
482     int         display;        ///< default application display
483     int         layer;          ///< default application display layer
484     int         displayzone;    ///< default application display zone
485     int         sound;          ///< default application sound
486     int         soundzone;      ///< default application sound zone
487     int         inputdev;       ///< default input device
488     int         inputsw;        ///< default input device switch
489 };
490
491 //==========================================================================
492 /**
493  *  @brief  This class holds cpu resource group information of system config
494  */
495 //==========================================================================
496 class CicoSCCpuResourceGrp
497 {
498 public:
499     /// default constructor
500     CicoSCCpuResourceGrp()
501         :m_id(-1), m_bDoIt(false) {}
502
503     /// destructor
504     ~CicoSCCpuResourceGrp() {}
505
506     /// dump log this class member variables
507     void dumpConf()
508     {
509         std::stringstream hightlist;
510         {
511             std::vector<int>::iterator itr = m_hight.begin();
512             for (; itr != m_hight.end(); ++itr) {
513                 hightlist << " " << *itr;
514             }
515
516         }
517
518         std::stringstream lowlist;
519         {
520             std::vector<int>::iterator itr = m_low.begin();
521             for (; itr != m_low.end(); ++itr) {
522                 lowlist << " " << *itr;
523             }
524
525         }
526
527         ICO_DBG("cpu reousrce group; id=%d doIt=%s grpNm=%s, high=%d, low=%d",
528                 m_id, m_bDoIt? "true": "false", m_grpNm.c_str(),
529                 hightlist.str().c_str(), lowlist.str().c_str());
530     };
531
532 public:
533     int              m_id;      ///< cpu resource group id
534     bool             m_bDoIt;   ///< cpu resouce control enable flag
535     std::string      m_grpNm;   ///< cpu resource group name
536     std::vector<int> m_hight;   ///< hight threshold list
537     std::vector<int> m_low;     ///< low threshold list
538 };
539
540 //==========================================================================
541 /**
542  *  @brief  This class holds system resource information of system config
543  */
544 //==========================================================================
545 class CicoSCResourceConf
546 {
547 public:
548     /// default constructor
549     CicoSCResourceConf()
550         :m_bDoIt(false), m_bDoItApp(false), m_bLog(false), 
551         m_sampling(-1), m_retryCnt(5), m_lowLimitVal(25),
552         m_highLimitVal(90) {}
553
554     /// destructor
555     ~CicoSCResourceConf() {}
556
557     /// dump log this class member variables
558     void dumpConf()
559     {
560         ICO_DBG("do:%s,%s log:%s, dir:%s, smpl:%d r:%d l:%d h:%d sz:%d",
561                 m_bDoIt? "true": "false", m_bDoItApp? "true": "false",
562                 m_bLog? "true": "false", m_cpuCGRPPath.c_str(), m_sampling,
563                 m_retryCnt, m_lowLimitVal, m_highLimitVal, m_cpuCtrl.size());
564     }
565
566 public:
567     bool        m_bDoIt;        ///< resource control enable flag
568     bool        m_bDoItApp;
569     bool        m_bLog;         ///< resource control log enable flag
570     std::string m_cpuCGRPPath;  ///< cpu cgroup path
571     int         m_sampling;     ///< sampling period
572     int         m_retryCnt;     ///< retry count
573     int         m_lowLimitVal;  ///< low limit value
574     int         m_highLimitVal; ///< high limit value
575     std::vector<CicoSCCpuResourceGrp*> m_cpuCtrl; ///< cpu control config list
576 };
577
578 //==========================================================================
579 /**
580  *  @brief  This class holds user information of system config
581  */
582 //==========================================================================
583 class CicoSCUserConf
584 {
585 public:
586     /// default constructor
587     CicoSCUserConf() :m_parent_dir("") {}
588     /// destructor
589     ~CicoSCUserConf() {}
590
591     /// dump log this class member variables
592     void dumpConf()
593     {
594         ICO_DBG("parent dir:%s", m_parent_dir.c_str());
595     }
596
597 public:
598     std::string m_parent_dir;  ///< parent dir
599 };
600
601 //==========================================================================
602 /**
603  *  @brief  This class holds vehicle information property of system config
604  */
605 //==========================================================================
606 class CicoSCVIPropertyConf
607 {
608 public:
609     /// default constructor
610     CicoSCVIPropertyConf()
611         : type(ICO_TYPE_UNKNOW) {}
612
613     /// destructor
614     ~CicoSCVIPropertyConf() {}
615
616     /// dump log this class member variables
617     void dumpConf()
618     {
619         ICO_DBG("vehicle_info: id=%02d name=%s objname=%s property=%s "
620                 "zone=%d typestr=%s type=%d",
621                 id, name.c_str(), objname.c_str(), property.c_str(),
622                 zone, typestr.c_str(), type);
623     }
624
625     int typeStrToInt(const std::string & str)
626     {
627         int ret = ICO_TYPE_UNKNOW;
628         if (0 == typestr.compare("BOOLEAN")) {
629             ret = ICO_TYPE_BOOLEAN;
630         }
631         else if (0 == typestr.compare("INT8")) {
632             ret = ICO_TYPE_INT8;
633         }
634         else if ((0 == typestr.compare("UINT8")) ||
635                  (0 == typestr.compare("BYTE"))) {
636             ret = ICO_TYPE_UINT8;
637         }
638         else if (0 == typestr.compare("INT16")) {
639             ret = ICO_TYPE_INT16;
640         }
641         else if (0 == typestr.compare("UINT16")) {
642             ret = ICO_TYPE_UINT16;
643         }
644         else if (0 == typestr.compare("INT32")) {
645             ret = ICO_TYPE_INT32;
646         }
647         else if (0 == typestr.compare("UINT32")) {
648             ret = ICO_TYPE_UINT32;
649         }
650         else if (0 == typestr.compare("INT64")) {
651             ret = ICO_TYPE_INT64;
652         }
653         else if (0 == typestr.compare("UINT64")) {
654             ret = ICO_TYPE_UINT64;
655         }
656         else if (0 == typestr.compare("DOUBLE")) {
657             ret = ICO_TYPE_DOUBLE;
658         }
659         else if (0 == typestr.compare("STRING")) {
660             ret = ICO_TYPE_STRING;
661         }
662         else {
663             ret = ICO_TYPE_UNKNOW;
664         }
665         return ret;
666     }
667
668 public:
669     int id;
670     std::string name;
671     std::string objname;
672     std::string property;
673     int zone;
674     std::string typestr;
675     int type;
676 };
677
678 //==========================================================================
679 /**
680  *  @brief  This class holds vehicle information of system config
681  */
682 //==========================================================================
683 class CicoSCVehicleInfoConf
684 {
685 public:
686     /// default constructor
687     CicoSCVehicleInfoConf() : retryCnt(0), waitTime(0) {}
688
689     /// destructor
690     ~CicoSCVehicleInfoConf() {}
691
692     /// dump log this class member variables
693     void dumpConf()
694     {
695         ICO_DBG("vehicle info: retry=%d waitTime=%d", retryCnt, waitTime);
696         std::map<int, CicoSCVIPropertyConf*>::iterator itr;
697         itr = properties.begin();
698         for(; itr != properties.end(); ++itr) {
699             itr->second->dumpConf();
700         }
701     }
702
703 public:
704     ///< retry count
705     int retryCnt;
706
707     ///< retry wait time[ms]
708     int waitTime;
709
710     ///< parent dir
711     std::map<int, CicoSCVIPropertyConf*> properties;
712 };
713
714 //==========================================================================
715 /**
716  *  @brief  This class Role of system config
717  */
718 //==========================================================================
719 class CicoSCRoleConf
720 {
721 public:
722     /// constructor
723     CicoSCRoleConf()
724         : m_def(ICO_SYC_ROLE_CONF_DEF), m_rst(ICO_SYC_ROLE_CONF_RST) {}
725     /// destructor
726     ~CicoSCRoleConf() {}
727     /// dump log this class member variables
728     void dumpConf()
729     {
730         ICO_DBG("Role info: default=%d, reset=%d, size=%d",
731                 (int)m_def, (int)m_rst, (int)m_stt.size());
732         std::map<std::string, short>::iterator itr;
733         itr = m_stt.begin();
734         for(; itr != m_stt.end(); ++itr) {
735             ICO_DBG("              key=\"%s\", stt=%d", itr->first.c_str(),
736                     (int)itr->second);
737         }
738     }
739
740
741 public:
742     short  m_def;
743     short  m_rst;
744     std::map<std::string, short>  m_stt;
745 };
746
747 //==========================================================================
748 /**
749  *  @brief  This class position onscreen window x,y
750  */
751 //==========================================================================
752 class CicoSCPositionOSConf
753 {
754 public:
755     /// constructor
756     CicoSCPositionOSConf(int x, int y, int w, int h)
757         : m_x(x), m_y(y), m_w(w), m_h(h) {}
758     /// destructor
759     ~CicoSCPositionOSConf() {}
760     /// dump log this class member variables
761     void dumpConf()
762     {
763         ICO_DBG("OnScreen Window position : x:%d, y:%d, w:%d, h:%d", m_x, m_y, m_w, m_h);
764     }
765 public:
766     int     m_x;
767     int     m_y;
768     int     m_w;
769     int     m_h;
770 };
771 #endif  // __CICO_CONF_H__
772 // vim:set expandtab ts=4 sw=4: