X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNetwork%2Fgeneric.hxx;h=18493651cb1d3fb64badf305f7ad7d5a666eaab0;hb=cff6b2034de866df70a2b29feb3383ee8ccbbef6;hp=eb732830bce8471460df1e6ff7439a5a5fba0063;hpb=4ec6810c290ed7ae871a62036936b2733d5995f4;p=flightgear.git diff --git a/src/Network/generic.hxx b/src/Network/generic.hxx index eb732830b..18493651c 100644 --- a/src/Network/generic.hxx +++ b/src/Network/generic.hxx @@ -42,7 +42,7 @@ public: ~FGGeneric(); bool gen_message(); - bool parse_message(int length); + bool parse_message_len(int length); // open hailing frequencies bool open(); @@ -57,6 +57,7 @@ public: void setExitOnError(bool val) { exitOnError = val; } bool getExitOnError() { return exitOnError; } + bool getInitOk(void) { return initOk; } protected: enum e_type { FG_BOOL=0, FG_INT, FG_FLOAT, FG_DOUBLE, FG_STRING, FG_FIXED }; @@ -100,8 +101,9 @@ private: bool gen_message_binary(); bool parse_message_ascii(int length); bool parse_message_binary(int length); - void read_config(SGPropertyNode *root, vector<_serial_prot> &msg); + bool read_config(SGPropertyNode *root, vector<_serial_prot> &msg); bool exitOnError; + bool initOk; template static void updateValue(_serial_prot& prot, const T& val) @@ -113,29 +115,16 @@ private: if( prot.max > prot.min ) { if( prot.wrap ) - { - T range = prot.max - prot.min + 1; - if( range > 0 ) - { - while( new_val < prot.min ) - new_val += range; - while( new_val > prot.max ) - new_val -= range; - } - } + new_val = SGMisc::normalizePeriodic(prot.min, prot.max, new_val); else - new_val = std::min(prot.max, std::max(prot.min, new_val)); + new_val = SGMisc::clip(new_val, prot.min, prot.max); } setValue(prot.prop, new_val); } - - template - static const T getValue(SGPropertyNode_ptr& prop); - - template - static void setValue(SGPropertyNode_ptr& prop, const T& val); + // Special handling for bool (relative change = toggle, no min/max, no wrap) + static void updateValue(_serial_prot& prot, bool val); };