From 6ccd6f2072953bab321ca502af3c5b647b771ce3 Mon Sep 17 00:00:00 2001 From: Paul Hollinsky Date: Mon, 22 Oct 2018 18:25:26 -0400 Subject: [PATCH] Fixed size of UART_SETTINGS --- include/icsneo/device/idevicesettings.h | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/include/icsneo/device/idevicesettings.h b/include/icsneo/device/idevicesettings.h index ab67f38..44c566e 100644 --- a/include/icsneo/device/idevicesettings.h +++ b/include/icsneo/device/idevicesettings.h @@ -60,6 +60,7 @@ typedef struct uint8_t innerFrameDelay25us; } CAN_SETTINGS; #define CAN_SETTINGS_SIZE 12 +static_assert(sizeof(CAN_SETTINGS) == CAN_SETTINGS_SIZE, "CAN_SETTINGS is the wrong size!"); /* FDMode in CANFD_SETTINGS */ enum @@ -244,6 +245,7 @@ typedef struct uint16_t chksum_enabled; } ISO9141_KEYWORD2000_SETTINGS; #define ISO9141_KEYWORD2000_SETTINGS_SIZE 114 +static_assert(sizeof(ISO9141_KEYWORD2000_SETTINGS) == ISO9141_KEYWORD2000_SETTINGS_SIZE, "ISO9141_KEYWORD2000_SETTINGS is the wrong size!"); typedef struct _UART_SETTINGS { @@ -254,19 +256,19 @@ typedef struct _UART_SETTINGS uint16_t stop_bits; uint8_t flow_control; /* 0- off, 1 - Simple CTS RTS */ uint8_t reserved_1; - union abcd { + union { uint32_t bOptions; - struct _sOptions - { - unsigned invert_tx : 1; - unsigned invert_rx : 1; - unsigned half_duplex : 1; - unsigned reserved_bits : 13; - unsigned reserved_bits2 : 16; + struct { + uint32_t invert_tx : 1; + uint32_t invert_rx : 1; + uint32_t half_duplex : 1; + uint32_t reserved_bits : 13; + uint32_t reserved_bits2 : 16; } sOptions; }; } UART_SETTINGS; #define UART_SETTINGS_SIZE 16 +static_assert(sizeof(UART_SETTINGS) == UART_SETTINGS_SIZE, "UART_SETTINGS is the wrong size!"); #pragma pack(pop)