Merge remote-tracking branch 'upstream/master' into abo_fw_alt_vel_control
[inav.git] / lib / main / MAVLink / common / mavlink_msg_gps_global_origin.h
blobccbde8fd14ce768f96a06d1d211d22cbee29ba78
1 #pragma once
2 // MESSAGE GPS_GLOBAL_ORIGIN PACKING
4 #define MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN 49
6 MAVPACKED(
7 typedef struct __mavlink_gps_global_origin_t {
8 int32_t latitude; /*< [degE7] Latitude (WGS84)*/
9 int32_t longitude; /*< [degE7] Longitude (WGS84)*/
10 int32_t altitude; /*< [mm] Altitude (MSL). Positive for up.*/
11 uint64_t time_usec; /*< [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.*/
12 }) mavlink_gps_global_origin_t;
14 #define MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN 20
15 #define MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_MIN_LEN 12
16 #define MAVLINK_MSG_ID_49_LEN 20
17 #define MAVLINK_MSG_ID_49_MIN_LEN 12
19 #define MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_CRC 39
20 #define MAVLINK_MSG_ID_49_CRC 39
24 #if MAVLINK_COMMAND_24BIT
25 #define MAVLINK_MESSAGE_INFO_GPS_GLOBAL_ORIGIN { \
26 49, \
27 "GPS_GLOBAL_ORIGIN", \
28 4, \
29 { { "latitude", NULL, MAVLINK_TYPE_INT32_T, 0, 0, offsetof(mavlink_gps_global_origin_t, latitude) }, \
30 { "longitude", NULL, MAVLINK_TYPE_INT32_T, 0, 4, offsetof(mavlink_gps_global_origin_t, longitude) }, \
31 { "altitude", NULL, MAVLINK_TYPE_INT32_T, 0, 8, offsetof(mavlink_gps_global_origin_t, altitude) }, \
32 { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 12, offsetof(mavlink_gps_global_origin_t, time_usec) }, \
33 } \
35 #else
36 #define MAVLINK_MESSAGE_INFO_GPS_GLOBAL_ORIGIN { \
37 "GPS_GLOBAL_ORIGIN", \
38 4, \
39 { { "latitude", NULL, MAVLINK_TYPE_INT32_T, 0, 0, offsetof(mavlink_gps_global_origin_t, latitude) }, \
40 { "longitude", NULL, MAVLINK_TYPE_INT32_T, 0, 4, offsetof(mavlink_gps_global_origin_t, longitude) }, \
41 { "altitude", NULL, MAVLINK_TYPE_INT32_T, 0, 8, offsetof(mavlink_gps_global_origin_t, altitude) }, \
42 { "time_usec", NULL, MAVLINK_TYPE_UINT64_T, 0, 12, offsetof(mavlink_gps_global_origin_t, time_usec) }, \
43 } \
45 #endif
47 /**
48 * @brief Pack a gps_global_origin message
49 * @param system_id ID of this system
50 * @param component_id ID of this component (e.g. 200 for IMU)
51 * @param msg The MAVLink message to compress the data into
53 * @param latitude [degE7] Latitude (WGS84)
54 * @param longitude [degE7] Longitude (WGS84)
55 * @param altitude [mm] Altitude (MSL). Positive for up.
56 * @param time_usec [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
57 * @return length of the message in bytes (excluding serial stream start sign)
59 static inline uint16_t mavlink_msg_gps_global_origin_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
60 int32_t latitude, int32_t longitude, int32_t altitude, uint64_t time_usec)
62 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
63 char buf[MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN];
64 _mav_put_int32_t(buf, 0, latitude);
65 _mav_put_int32_t(buf, 4, longitude);
66 _mav_put_int32_t(buf, 8, altitude);
67 _mav_put_uint64_t(buf, 12, time_usec);
69 memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN);
70 #else
71 mavlink_gps_global_origin_t packet;
72 packet.latitude = latitude;
73 packet.longitude = longitude;
74 packet.altitude = altitude;
75 packet.time_usec = time_usec;
77 memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN);
78 #endif
80 msg->msgid = MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN;
81 return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_MIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_CRC);
84 /**
85 * @brief Pack a gps_global_origin message on a channel
86 * @param system_id ID of this system
87 * @param component_id ID of this component (e.g. 200 for IMU)
88 * @param chan The MAVLink channel this message will be sent over
89 * @param msg The MAVLink message to compress the data into
90 * @param latitude [degE7] Latitude (WGS84)
91 * @param longitude [degE7] Longitude (WGS84)
92 * @param altitude [mm] Altitude (MSL). Positive for up.
93 * @param time_usec [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
94 * @return length of the message in bytes (excluding serial stream start sign)
96 static inline uint16_t mavlink_msg_gps_global_origin_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan,
97 mavlink_message_t* msg,
98 int32_t latitude,int32_t longitude,int32_t altitude,uint64_t time_usec)
100 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
101 char buf[MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN];
102 _mav_put_int32_t(buf, 0, latitude);
103 _mav_put_int32_t(buf, 4, longitude);
104 _mav_put_int32_t(buf, 8, altitude);
105 _mav_put_uint64_t(buf, 12, time_usec);
107 memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN);
108 #else
109 mavlink_gps_global_origin_t packet;
110 packet.latitude = latitude;
111 packet.longitude = longitude;
112 packet.altitude = altitude;
113 packet.time_usec = time_usec;
115 memcpy(_MAV_PAYLOAD_NON_CONST(msg), &packet, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN);
116 #endif
118 msg->msgid = MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN;
119 return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_MIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_CRC);
123 * @brief Encode a gps_global_origin struct
125 * @param system_id ID of this system
126 * @param component_id ID of this component (e.g. 200 for IMU)
127 * @param msg The MAVLink message to compress the data into
128 * @param gps_global_origin C-struct to read the message contents from
130 static inline uint16_t mavlink_msg_gps_global_origin_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_gps_global_origin_t* gps_global_origin)
132 return mavlink_msg_gps_global_origin_pack(system_id, component_id, msg, gps_global_origin->latitude, gps_global_origin->longitude, gps_global_origin->altitude, gps_global_origin->time_usec);
136 * @brief Encode a gps_global_origin struct on a channel
138 * @param system_id ID of this system
139 * @param component_id ID of this component (e.g. 200 for IMU)
140 * @param chan The MAVLink channel this message will be sent over
141 * @param msg The MAVLink message to compress the data into
142 * @param gps_global_origin C-struct to read the message contents from
144 static inline uint16_t mavlink_msg_gps_global_origin_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_gps_global_origin_t* gps_global_origin)
146 return mavlink_msg_gps_global_origin_pack_chan(system_id, component_id, chan, msg, gps_global_origin->latitude, gps_global_origin->longitude, gps_global_origin->altitude, gps_global_origin->time_usec);
150 * @brief Send a gps_global_origin message
151 * @param chan MAVLink channel to send the message
153 * @param latitude [degE7] Latitude (WGS84)
154 * @param longitude [degE7] Longitude (WGS84)
155 * @param altitude [mm] Altitude (MSL). Positive for up.
156 * @param time_usec [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
158 #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS
160 static inline void mavlink_msg_gps_global_origin_send(mavlink_channel_t chan, int32_t latitude, int32_t longitude, int32_t altitude, uint64_t time_usec)
162 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
163 char buf[MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN];
164 _mav_put_int32_t(buf, 0, latitude);
165 _mav_put_int32_t(buf, 4, longitude);
166 _mav_put_int32_t(buf, 8, altitude);
167 _mav_put_uint64_t(buf, 12, time_usec);
169 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN, buf, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_MIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_CRC);
170 #else
171 mavlink_gps_global_origin_t packet;
172 packet.latitude = latitude;
173 packet.longitude = longitude;
174 packet.altitude = altitude;
175 packet.time_usec = time_usec;
177 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN, (const char *)&packet, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_MIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_CRC);
178 #endif
182 * @brief Send a gps_global_origin message
183 * @param chan MAVLink channel to send the message
184 * @param struct The MAVLink struct to serialize
186 static inline void mavlink_msg_gps_global_origin_send_struct(mavlink_channel_t chan, const mavlink_gps_global_origin_t* gps_global_origin)
188 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
189 mavlink_msg_gps_global_origin_send(chan, gps_global_origin->latitude, gps_global_origin->longitude, gps_global_origin->altitude, gps_global_origin->time_usec);
190 #else
191 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN, (const char *)gps_global_origin, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_MIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_CRC);
192 #endif
195 #if MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN <= MAVLINK_MAX_PAYLOAD_LEN
197 This varient of _send() can be used to save stack space by re-using
198 memory from the receive buffer. The caller provides a
199 mavlink_message_t which is the size of a full mavlink message. This
200 is usually the receive buffer for the channel, and allows a reply to an
201 incoming message with minimum stack space usage.
203 static inline void mavlink_msg_gps_global_origin_send_buf(mavlink_message_t *msgbuf, mavlink_channel_t chan, int32_t latitude, int32_t longitude, int32_t altitude, uint64_t time_usec)
205 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
206 char *buf = (char *)msgbuf;
207 _mav_put_int32_t(buf, 0, latitude);
208 _mav_put_int32_t(buf, 4, longitude);
209 _mav_put_int32_t(buf, 8, altitude);
210 _mav_put_uint64_t(buf, 12, time_usec);
212 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN, buf, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_MIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_CRC);
213 #else
214 mavlink_gps_global_origin_t *packet = (mavlink_gps_global_origin_t *)msgbuf;
215 packet->latitude = latitude;
216 packet->longitude = longitude;
217 packet->altitude = altitude;
218 packet->time_usec = time_usec;
220 _mav_finalize_message_chan_send(chan, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN, (const char *)packet, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_MIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_CRC);
221 #endif
223 #endif
225 #endif
227 // MESSAGE GPS_GLOBAL_ORIGIN UNPACKING
231 * @brief Get field latitude from gps_global_origin message
233 * @return [degE7] Latitude (WGS84)
235 static inline int32_t mavlink_msg_gps_global_origin_get_latitude(const mavlink_message_t* msg)
237 return _MAV_RETURN_int32_t(msg, 0);
241 * @brief Get field longitude from gps_global_origin message
243 * @return [degE7] Longitude (WGS84)
245 static inline int32_t mavlink_msg_gps_global_origin_get_longitude(const mavlink_message_t* msg)
247 return _MAV_RETURN_int32_t(msg, 4);
251 * @brief Get field altitude from gps_global_origin message
253 * @return [mm] Altitude (MSL). Positive for up.
255 static inline int32_t mavlink_msg_gps_global_origin_get_altitude(const mavlink_message_t* msg)
257 return _MAV_RETURN_int32_t(msg, 8);
261 * @brief Get field time_usec from gps_global_origin message
263 * @return [us] Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
265 static inline uint64_t mavlink_msg_gps_global_origin_get_time_usec(const mavlink_message_t* msg)
267 return _MAV_RETURN_uint64_t(msg, 12);
271 * @brief Decode a gps_global_origin message into a struct
273 * @param msg The message to decode
274 * @param gps_global_origin C-struct to decode the message contents into
276 static inline void mavlink_msg_gps_global_origin_decode(const mavlink_message_t* msg, mavlink_gps_global_origin_t* gps_global_origin)
278 #if MAVLINK_NEED_BYTE_SWAP || !MAVLINK_ALIGNED_FIELDS
279 gps_global_origin->latitude = mavlink_msg_gps_global_origin_get_latitude(msg);
280 gps_global_origin->longitude = mavlink_msg_gps_global_origin_get_longitude(msg);
281 gps_global_origin->altitude = mavlink_msg_gps_global_origin_get_altitude(msg);
282 gps_global_origin->time_usec = mavlink_msg_gps_global_origin_get_time_usec(msg);
283 #else
284 uint8_t len = msg->len < MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN? msg->len : MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN;
285 memset(gps_global_origin, 0, MAVLINK_MSG_ID_GPS_GLOBAL_ORIGIN_LEN);
286 memcpy(gps_global_origin, _MAV_PAYLOAD(msg), len);
287 #endif