FreeRDP
channels/location.h
1 
20 #ifndef FREERDP_CHANNEL_LOCATION_H
21 #define FREERDP_CHANNEL_LOCATION_H
22 
23 #include <freerdp/api.h>
24 #include <freerdp/dvc.h>
25 #include <freerdp/types.h>
26 
37 #define LOCATION_CHANNEL_NAME "location"
39 #define LOCATION_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::Location"
40 
41 #ifdef __cplusplus
42 extern "C"
43 {
44 #endif
45 
46  typedef enum
47  {
48  PDUTYPE_LOC_RESERVED = 0x0000,
49  PDUTYPE_SERVER_READY = 0x0001,
50  PDUTYPE_CLIENT_READY = 0x0002,
51  PDUTYPE_BASE_LOCATION3D = 0x0003,
52  PDUTYPE_LOCATION2D_DELTA = 0x0004,
53  PDUTYPE_LOCATION3D_DELTA = 0x0005,
54  } LOCATION_PDUTYPE;
55 
56 #define LOCATION_HEADER_SIZE 6
57 
58  typedef struct
59  {
60  LOCATION_PDUTYPE pduType;
61  UINT32 pduLength;
63 
64  typedef enum
65  {
66  RDPLOCATION_PROTOCOL_VERSION_100 = 0x00010000,
67  RDPLOCATION_PROTOCOL_VERSION_200 = 0x00020000,
68  } RDPLOCATION_PROTOCOL_VERSION;
69 
70  typedef struct
71  {
72  RDPLOCATION_HEADER header;
73  RDPLOCATION_PROTOCOL_VERSION protocolVersion;
74  UINT32 flags;
76 
77  typedef struct
78  {
79  RDPLOCATION_HEADER header;
80  RDPLOCATION_PROTOCOL_VERSION protocolVersion;
81  UINT32 flags;
83 
84  typedef enum
85  {
86  LOCATIONSOURCE_IP = 0x00,
87  LOCATIONSOURCE_WIFI = 0x01,
88  LOCATIONSOURCE_CELL = 0x02,
89  LOCATIONSOURCE_GNSS = 0x03,
90  } LOCATIONSOURCE;
91 
92  typedef struct
93  {
94  RDPLOCATION_HEADER header;
95  double latitude;
96  double longitude;
97  INT32 altitude;
98  double* speed;
99  double* heading;
100  double* horizontalAccuracy;
101  LOCATIONSOURCE* source;
103 
104  typedef struct
105  {
106  RDPLOCATION_HEADER header;
107  double latitudeDelta;
108  double longitudeDelta;
109  double* speedDelta;
110  double* headingDelta;
112 
113  typedef struct
114  {
115  RDPLOCATION_HEADER header;
116  double latitudeDelta;
117  double longitudeDelta;
118  INT32 altitudeDelta;
119  double* speedDelta;
120  double* headingDelta;
122 
123 #ifdef __cplusplus
124 }
125 #endif
128 #endif /* FREERDP_CHANNEL_LOCATION_H */