#include <Main/util.hxx>
-Clock::Clock ( SGPropertyNode *node )
- : _is_serviceable(true),
- _gmt_time_sec(0),
- _offset_sec(0),
- _indicated_sec(0),
- _indicated_min(0),
- _indicated_hour(0),
- _local_hour(0),
- _standstill_offset(0),
- name("clock"),
- num(0)
+Clock::Clock(SGPropertyNode *node) :
+ _name(node->getStringValue("name", "clock")),
+ _num(node->getIntValue("number", 0)),
+ _is_serviceable(true),
+ _gmt_time_sec(0),
+ _offset_sec(0),
+ _indicated_sec(0),
+ _indicated_min(0),
+ _indicated_hour(0),
+ _local_hour(0),
+ _standstill_offset(0)
{
_indicated_string[0] = '\0';
-
- int i;
- for ( i = 0; i < node->nChildren(); ++i ) {
- SGPropertyNode *child = node->getChild(i);
- string cname = child->getName();
- string cval = child->getStringValue();
- if ( cname == "name" ) {
- name = cval;
- } else if ( cname == "number" ) {
- num = child->getIntValue();
- } else {
- SG_LOG( SG_INSTR, SG_WARN, "Error in clock config logic" );
- if ( name.length() ) {
- SG_LOG( SG_INSTR, SG_WARN, "Section = " << name );
- }
- }
- }
-}
-
-Clock::Clock ()
- : _is_serviceable(true),
- _gmt_time_sec(0),
- _offset_sec(0),
- _indicated_sec(0),
- _standstill_offset(0)
-{
- _indicated_string[0] = '\0';
- _indicated_short_string[0] = '\0';
}
Clock::~Clock ()
Clock::init ()
{
string branch;
- branch = "/instrumentation/" + name;
+ branch = "/instrumentation/" + _name;
- SGPropertyNode *node = fgGetNode(branch.c_str(), num, true );
+ SGPropertyNode *node = fgGetNode(branch.c_str(), _num, true );
_serviceable_node = node->getChild("serviceable", 0, true);
_offset_node = node->getChild("offset-sec", 0, true);
_sec_node = node->getChild("indicated-sec", 0, true);
// compute local time zone hour
int tzoffset_hours = globals->get_time_params()->get_local_offset() / 3600;
int lhour = hour + tzoffset_hours;
- if ( lhour < 0 ) { lhour += 24; }
- if ( lhour >= 24 ) { lhour -= 24; }
+ if (lhour < 0)
+ lhour += 24;
+ if (lhour >= 24)
+ lhour -= 24;
long gmt = (hour * 60 + min) * 60 + sec;
int offset = _offset_node->getLongValue();
_hour_node->setLongValue(_indicated_hour);
_local_hour = lhour;
_lhour_node->setLongValue(_local_hour);
-
-
}
#ifndef __INSTRUMENTS_CLOCK_HXX
#define __INSTRUMENTS_CLOCK_HXX 1
-#ifndef __cplusplus
-# error This library requires C++
-#endif
-
#include <simgear/props/props.hxx>
#include <simgear/structure/subsystem_mgr.hxx>
* /instrumentation/clock/indicated-sec
* /instrumentation/clock/indicated-string
*/
-class Clock : public SGSubsystem
-{
-
+class Clock : public SGSubsystem {
public:
+ Clock(SGPropertyNode *node);
+ virtual ~Clock();
- Clock ( SGPropertyNode *node );
- Clock ();
- virtual ~Clock ();
-
- virtual void init ();
- virtual void update (double dt);
+ virtual void init();
+ virtual void update(double dt);
private:
+ string _name;
+ unsigned int _num;
bool _is_serviceable;
long _gmt_time_sec;
char _local_short_string[16];
long _standstill_offset;
- string name;
- int num;
-
SGPropertyNode_ptr _serviceable_node;
SGPropertyNode_ptr _offset_node;
SGPropertyNode_ptr _sec_node;
SGPropertyNode_ptr _string_node;
SGPropertyNode_ptr _string_node1;
SGPropertyNode_ptr _string_node2;
-
};
#endif // __INSTRUMENTS_CLOCK_HXX