FlightGear next
fg_dds_prop.cpp
Go to the documentation of this file.
1#include <cstdio>
2#include <cstring>
3#include <cstdlib>
4
5#include <simgear/io/SGDataDistributionService.hxx>
6
7#include "dds_props.h"
8
9/* An array of one message(aka sample in dds terms) will be used. */
10#define MAX_SAMPLES 1
11
12int main()
13{
14 SG_DDS participant;
15
16 FG_DDS_prop prop;
17 SG_DDS_Topic *topic = new SG_DDS_Topic(prop, &FG_DDS_prop_desc);
18
19 participant.add(topic, SG_IO_BI);
20
21 dds_guid_t guid = topic->get_guid();
22 memcpy(prop.guid, guid.v, 16);
23 printf("GUID: ");
24 for(int i=0; i<16; ++i)
25 printf("%X ", prop.guid[i]);
26 printf("\n");
27
28 char path[256];
29 printf("\nType 'q' to quit\n");
30 do
31 {
32 printf("Property path or id: ");
33 int len = scanf("%255s", path);
34 if (len == EOF) continue;
35
36 if (*path == 'q') break;
37
38 char *end;
39 int id = strtol(path, &end, 10);
40
41 prop.id = (end == path) ? FG_DDS_PROP_REQUEST : id;
44 prop.val._d = FG_DDS_STRING;
45 prop.val._u.String = path;
46
47 topic->write();
48
49 participant.wait();
50 if (topic->read() &&
52 prop.id != FG_DDS_PROP_REQUEST)
53 {
54 printf("\nReceived:\n");
55 switch(prop.val._d)
56 {
57 case FG_DDS_NONE:
58 printf(" type: none");
59 break;
60 case FG_DDS_ALIAS:
61 printf(" type: alias");
62 printf(" value: %s\n", prop.val._u.String);
63 break;
64 case FG_DDS_BOOL:
65 printf(" type: bool");
66 printf(" value: %i\n", prop.val._u.Bool);
67 break;
68 case FG_DDS_INT:
69 printf(" type: int");
70 printf(" value: %i\n", prop.val._u.Int32);
71 break;
72 case FG_DDS_LONG:
73 printf(" type: long");
74 printf(" value: %li\n", prop.val._u.Int64);
75 break;
76 case FG_DDS_FLOAT:
77 printf(" type: float");
78 printf(" value: %f\n", prop.val._u.Float32);
79 break;
80 case FG_DDS_DOUBLE:
81 printf(" type: double");
82 printf(" value: %lf\n", prop.val._u.Float64);
83 break;
84 case FG_DDS_STRING:
85 printf(" type: string");
86 printf(" value: %s\n", prop.val._u.String);
87 break;
89 printf(" type: unspecified");
90 printf(" value: %s\n", prop.val._u.String);
91 break;
92 default:
93 break;
94 }
95 }
96 } while(true);
97
98 return EXIT_SUCCESS;
99}
#define i(x)
const dds_topic_descriptor_t FG_DDS_prop_desc
Definition dds_props.c:36
#define FG_DDS_MODE_READ
Definition dds_props.h:22
#define FG_DDS_PROP_VERSION
Definition dds_props.h:20
#define FG_DDS_PROP_REQUEST
Definition dds_props.h:21
@ FG_DDS_UNSPECIFIED
Definition dds_props.h:34
@ FG_DDS_LONG
Definition dds_props.h:30
@ FG_DDS_FLOAT
Definition dds_props.h:31
@ FG_DDS_ALIAS
Definition dds_props.h:27
@ FG_DDS_NONE
Definition dds_props.h:26
@ FG_DDS_INT
Definition dds_props.h:29
@ FG_DDS_BOOL
Definition dds_props.h:28
@ FG_DDS_DOUBLE
Definition dds_props.h:32
@ FG_DDS_STRING
Definition dds_props.h:33
int main()
FG_propValue val
Definition dds_props.h:64
uint8_t version
Definition dds_props.h:62
uint8_t guid[16]
Definition dds_props.h:65
int32_t id
Definition dds_props.h:61
int32_t Int32
Definition dds_props.h:47
float Float32
Definition dds_props.h:49
char * String
Definition dds_props.h:51
int64_t Int64
Definition dds_props.h:48
FG_propType _d
Definition dds_props.h:43
union FG_propValue::@155153037146116023270074041102065253170142315045 _u
double Float64
Definition dds_props.h:50