From b8382f3d2070be51c01f1191b5c4b176faf14dac Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Fri, 20 Feb 2015 17:42:14 -0500 Subject: More portable equivalent of #pracgma pack, will work with clang. No code changes. All regression tests pass. --- driver_garmin.c | 10 +++++----- driver_rtcm2.c | 4 ++-- monitor_garmin.c | 9 +++++---- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/driver_garmin.c b/driver_garmin.c index d9d4888d..2d75745b 100644 --- a/driver_garmin.c +++ b/driver_garmin.c @@ -165,7 +165,7 @@ #pragma pack(1) // This is the data format of the satellite data from the garmin USB -typedef struct +typedef struct __attribute__((__packed__)) { uint8_t svid; uint16_t snr; // 0 - 0xffff @@ -179,7 +179,7 @@ typedef struct /* Garmin D800_Pvt_Datetype_Type */ /* packet type: GARMIN_PKTID_PVT_DATA 52 */ /* This is the data format of the position data from the garmin USB */ -typedef struct +typedef struct __attribute__((__packed__)) { float alt; /* altitude above WGS 84 (meters) */ float epe; /* estimated position error, 2 sigma (meters) */ @@ -206,7 +206,7 @@ typedef struct * beginning of the current week */ } cpo_pvt_data; -typedef struct +typedef struct __attribute__((__packed__)) { uint32_t cycles; double pr; @@ -219,7 +219,7 @@ typedef struct /* packet type: GARMIN_PKTID_RMD_DATA 53 */ /* seems identical to the packet id 0x29 from the Garmin GPS 25 */ -typedef struct +typedef struct __attribute__((__packed__)) { double rcvr_tow; int16_t rcvr_wn; @@ -227,7 +227,7 @@ typedef struct } cpo_rcv_data; // This is the packet format to/from the Garmin USB -typedef struct +typedef struct __attribute__((__packed__)) { uint8_t mPacketType; uint8_t mReserved1; diff --git a/driver_rtcm2.c b/driver_rtcm2.c index c190911c..74a5a61d 100644 --- a/driver_rtcm2.c +++ b/driver_rtcm2.c @@ -455,7 +455,7 @@ struct rtcm2_msg_t { /* unknown message */ isgps30bits_t rtcm2_msgunk[RTCM2_WORDS_MAX-2]; } msg_type; -}; +} __attribute__((__packed__)); #endif /* LITTLE_ENDIAN */ @@ -735,7 +735,7 @@ struct rtcm2_msg_t { /* unknown message */ isgps30bits_t rtcm2_msgunk[RTCM2_WORDS_MAX-2]; } msg_type; -}; +} __attribute__((__packed__)); #endif /* S_SPLINT_S */ #endif /* BIG ENDIAN */ diff --git a/monitor_garmin.c b/monitor_garmin.c index 779086d5..570179b7 100644 --- a/monitor_garmin.c +++ b/monitor_garmin.c @@ -26,7 +26,7 @@ static WINDOW *miscwin, *mid51win, *mid114win; #pragma pack(1) /* Satellite Data Record */ -typedef struct +typedef struct __attribute__((__packed__)) { uint8_t svid; uint16_t snr; @@ -36,7 +36,7 @@ typedef struct } cpo_sat_data; /* Position Record */ -typedef struct +typedef struct __attribute__((__packed__)) { float alt; float epe; @@ -55,7 +55,7 @@ typedef struct } cpo_pvt_data; /* Receiver Measurement Record */ -typedef struct +typedef struct __attribute__((__packed__)) { // cppcheck-suppress unusedStructMember uint32_t cycles; @@ -71,7 +71,8 @@ typedef struct // cppcheck-suppress unusedStructMember int8_t valid; } cpo_rcv_sv_data; -typedef struct + +typedef struct __attribute__((__packed__)) { // cppcheck-suppress unusedStructMember double rcvr_tow; -- cgit v1.2.1