Updates to the generic communication protocol. This adds variable seperators as well as sequence seperators.
This commit is contained in:
parent
89bdf9657b
commit
ae011965e1
2 changed files with 38 additions and 3 deletions
src/Network
|
@ -54,7 +54,36 @@ FGGeneric::FGGeneric(string& config) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SGPropertyNode *output = root.getNode("generic/output");
|
SGPropertyNode *output = root.getNode("generic/output");
|
||||||
seperator = output->getStringValue("seperator");
|
|
||||||
|
/* These variables specified in the fgfsbase/Properties/xxxx.xml file for each format
|
||||||
|
* var_sep_string = the string/charachter to place between variables
|
||||||
|
* line_sep_string = the string/charachter to place at the end of each lot of variables
|
||||||
|
*/
|
||||||
|
var_sep_string = output->getStringValue("var_seperator");
|
||||||
|
line_sep_string = output->getStringValue("line_seperator");
|
||||||
|
|
||||||
|
if ( var_seperator == "newline" )
|
||||||
|
var_seperator = '\n';
|
||||||
|
else if ( var_seperator == "formfeed" )
|
||||||
|
var_seperator = '\f';
|
||||||
|
else if ( var_seperator == "carriagereturn" )
|
||||||
|
var_seperator = '\r';
|
||||||
|
else if ( var_seperator == "verticaltab" )
|
||||||
|
var_seperator = '\v';
|
||||||
|
else
|
||||||
|
var_seperator = var_sep_string;
|
||||||
|
|
||||||
|
if ( line_sep_string == "newline" )
|
||||||
|
line_seperator = '\n';
|
||||||
|
else if ( line_sep_string == "formfeed" )
|
||||||
|
line_seperator = '\f';
|
||||||
|
else if ( line_sep_string == "carriagereturn" )
|
||||||
|
line_seperator = '\r';
|
||||||
|
else if ( line_sep_string == "verticaltab" )
|
||||||
|
line_seperator = '\v';
|
||||||
|
else
|
||||||
|
line_seperator = line_sep_string;
|
||||||
|
|
||||||
|
|
||||||
vector<SGPropertyNode_ptr> chunks = output->getChildren("chunk");
|
vector<SGPropertyNode_ptr> chunks = output->getChildren("chunk");
|
||||||
for (unsigned int i = 0; i < chunks.size(); i++) {
|
for (unsigned int i = 0; i < chunks.size(); i++) {
|
||||||
|
@ -102,7 +131,7 @@ bool FGGeneric::gen_message() {
|
||||||
for (unsigned int i = 0; i < _message.size(); i++) {
|
for (unsigned int i = 0; i < _message.size(); i++) {
|
||||||
|
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
generic_sentence += seperator;
|
generic_sentence += line_seperator;
|
||||||
|
|
||||||
switch (_message[i].type) {
|
switch (_message[i].type) {
|
||||||
case FG_INT:
|
case FG_INT:
|
||||||
|
@ -130,6 +159,9 @@ bool FGGeneric::gen_message() {
|
||||||
generic_sentence += tmp;
|
generic_sentence += tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* After each lot of variables has been added, put the line seperator char/string */
|
||||||
|
generic_sentence += line_seperator;
|
||||||
|
|
||||||
|
|
||||||
length = generic_sentence.length();
|
length = generic_sentence.length();
|
||||||
strncpy( buf, generic_sentence.c_str(), length );
|
strncpy( buf, generic_sentence.c_str(), length );
|
||||||
|
|
|
@ -71,7 +71,10 @@ private:
|
||||||
int length;
|
int length;
|
||||||
char buf[ FG_MAX_MSG_SIZE ];
|
char buf[ FG_MAX_MSG_SIZE ];
|
||||||
|
|
||||||
string seperator;
|
string var_seperator;
|
||||||
|
string line_seperator;
|
||||||
|
string var_sep_string;
|
||||||
|
string line_sep_string;
|
||||||
vector<_serial_prot> _message;
|
vector<_serial_prot> _message;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue