- if (binary_footer_type != FOOTER_NONE) {
- if (binary_byte_order == BYTE_ORDER_MATCHES_NETWORK_ORDER) {
- *((int32_t*)&buf[length]) = binary_footer_value;
- } else {
- *((int32_t*)&buf[length]) = sg_bswap_32(binary_footer_value);
- }
- length += sizeof(int32_t);
+
+ switch (_out_message[i].type) {
+ case FG_INT:
+ val = _out_message[i].offset +
+ _out_message[i].prop->getIntValue() * _out_message[i].factor;
+ snprintf(tmp, 255, _out_message[i].format.c_str(), (int)val);
+ break;
+
+ case FG_BOOL:
+ snprintf(tmp, 255, _out_message[i].format.c_str(),
+ _out_message[i].prop->getBoolValue());
+ break;
+
+ case FG_FIXED:
+ val = _out_message[i].offset +
+ _out_message[i].prop->getFloatValue() * _out_message[i].factor;
+ snprintf(tmp, 255, _out_message[i].format.c_str(), (float)val);
+ break;
+
+ case FG_FLOAT:
+ val = _out_message[i].offset +
+ _out_message[i].prop->getFloatValue() * _out_message[i].factor;
+ snprintf(tmp, 255, _out_message[i].format.c_str(), (float)val);
+ break;
+
+ case FG_DOUBLE:
+ val = _out_message[i].offset +
+ _out_message[i].prop->getDoubleValue() * _out_message[i].factor;
+ snprintf(tmp, 255, _out_message[i].format.c_str(), (double)val);
+ break;
+
+ default: // SG_STRING
+ snprintf(tmp, 255, _out_message[i].format.c_str(),
+ _out_message[i].prop->getStringValue());