Add a proprety requester test utility
This commit is contained in:
parent
c88c47e1b5
commit
4f28e2dfff
1 changed files with 90 additions and 0 deletions
90
src/Network/DDS/fg_dds_prop.cpp
Normal file
90
src/Network/DDS/fg_dds_prop.cpp
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <simgear/io/SGDataDistributionService.hxx>
|
||||||
|
|
||||||
|
#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;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue