From 4f28e2dfff7f64d87320449f0539f16e1528a07a Mon Sep 17 00:00:00 2001 From: Erik Hofman Date: Fri, 9 Apr 2021 14:44:33 +0200 Subject: [PATCH] Add a proprety requester test utility --- src/Network/DDS/fg_dds_prop.cpp | 90 +++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/Network/DDS/fg_dds_prop.cpp diff --git a/src/Network/DDS/fg_dds_prop.cpp b/src/Network/DDS/fg_dds_prop.cpp new file mode 100644 index 000000000..947b3e328 --- /dev/null +++ b/src/Network/DDS/fg_dds_prop.cpp @@ -0,0 +1,90 @@ +#include +#include +#include + +#include + +#include "dds_props.h" + +/* An array of one message(aka sample in dds terms) will be used. */ +#define MAX_SAMPLES 1 + +int main() +{ + SG_DDS participant; + + FG_DDS_PROP prop; + SG_DDS_Topic *topic = new SG_DDS_Topic(prop, &FG_DDS_PROP_desc); + + participant.add(topic, SG_IO_OUT); + + dds_guid_t guid = topic->get_guid(); + memcpy(prop.guid, guid.v, 16); + printf("GUID: "); + for(int i=0; i<16; ++i) + printf("%X ", prop.guid[i]); + printf("\n"); + + char path[256]; + printf("\nType 'q' to quit\n"); + do + { + printf("Property path: "); + int len = scanf("%255s", path); + if (len == EOF) continue; + + if (*path == 'q') break; + + prop.id = FG_DDS_PROP_REQUEST; + prop.val._d = FG_DDS_STRING; + prop.val._u.String = path; + + topic->write(); + + participant.wait(); + + topic->read(); + switch(prop.val._d) + { + case FG_DDS_NONE: + printf(" type: none"); + break; + case FG_DDS_ALIAS: + printf(" type: alias"); + printf(" value: %s\n", prop.val._u.String); + break; + case FG_DDS_BOOL: + printf(" type: bool"); + printf(" value: %i\n", prop.val._u.Bool); + break; + case FG_DDS_INT: + printf(" type: int"); + printf(" value: %i\n", prop.val._u.Int32); + break; + case FG_DDS_LONG: + printf(" type: long"); + printf(" value: %li\n", prop.val._u.Int64); + break; + case FG_DDS_FLOAT: + printf(" type: float"); + printf(" value: %f\n", prop.val._u.Float32); + break; + case FG_DDS_DOUBLE: + printf(" type: double"); + printf(" value: %lf\n", prop.val._u.Float64); + break; + case FG_DDS_STRING: + printf(" type: string"); + printf(" value: %s\n", prop.val._u.String); + break; + case FG_DDS_UNSPECIFIED: + printf(" type: unspecified"); + printf(" value: %s\n", prop.val._u.String); + break; + default: + break; + } + } while(true); + + return EXIT_SUCCESS; +}