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
12
int
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;
42
prop.
version
=
FG_DDS_PROP_VERSION
;
43
prop.
mode
=
FG_DDS_MODE_READ
;
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() &&
51
prop.
version
==
FG_DDS_PROP_VERSION
&&
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
;
88
case
FG_DDS_UNSPECIFIED
:
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
}
i
#define i(x)
FG_DDS_prop_desc
const dds_topic_descriptor_t FG_DDS_prop_desc
Definition
dds_props.c:36
dds_props.h
FG_DDS_MODE_READ
#define FG_DDS_MODE_READ
Definition
dds_props.h:22
FG_DDS_PROP_VERSION
#define FG_DDS_PROP_VERSION
Definition
dds_props.h:20
FG_DDS_PROP_REQUEST
#define FG_DDS_PROP_REQUEST
Definition
dds_props.h:21
FG_DDS_UNSPECIFIED
@ FG_DDS_UNSPECIFIED
Definition
dds_props.h:34
FG_DDS_LONG
@ FG_DDS_LONG
Definition
dds_props.h:30
FG_DDS_FLOAT
@ FG_DDS_FLOAT
Definition
dds_props.h:31
FG_DDS_ALIAS
@ FG_DDS_ALIAS
Definition
dds_props.h:27
FG_DDS_NONE
@ FG_DDS_NONE
Definition
dds_props.h:26
FG_DDS_INT
@ FG_DDS_INT
Definition
dds_props.h:29
FG_DDS_BOOL
@ FG_DDS_BOOL
Definition
dds_props.h:28
FG_DDS_DOUBLE
@ FG_DDS_DOUBLE
Definition
dds_props.h:32
FG_DDS_STRING
@ FG_DDS_STRING
Definition
dds_props.h:33
main
int main()
Definition
fg_dds_prop.cpp:12
FG_DDS_prop
Definition
dds_props.h:60
FG_DDS_prop::val
FG_propValue val
Definition
dds_props.h:64
FG_DDS_prop::mode
char mode
Definition
dds_props.h:63
FG_DDS_prop::version
uint8_t version
Definition
dds_props.h:62
FG_DDS_prop::guid
uint8_t guid[16]
Definition
dds_props.h:65
FG_DDS_prop::id
int32_t id
Definition
dds_props.h:61
FG_propValue::Int32
int32_t Int32
Definition
dds_props.h:47
FG_propValue::Float32
float Float32
Definition
dds_props.h:49
FG_propValue::String
char * String
Definition
dds_props.h:51
FG_propValue::Bool
char Bool
Definition
dds_props.h:46
FG_propValue::Int64
int64_t Int64
Definition
dds_props.h:48
FG_propValue::_d
FG_propType _d
Definition
dds_props.h:43
FG_propValue::_u
union FG_propValue::@155153037146116023270074041102065253170142315045 _u
FG_propValue::Float64
double Float64
Definition
dds_props.h:50
src
Network
DDS
fg_dds_prop.cpp
Generated on Tue Jun 3 2025 12:58:41 for FlightGear by
1.13.2