typedef struct canregs { union { struct { canmessage_t messageReg; uint8_t someOtherReg; // padding } msgArr[16]; struct { uint8_t controlReg; // Control Register uint8_t statusReg; // Status Register uint8_t cpuInterfaceReg; // CPU Interface Register uint8_t reserved1Reg; uint8_t highSpeedReadReg[2]; // High Speed Read uint8_t globalMaskStandardReg[2]; // Standard Global Mask byte 0 uint8_t globalMaskExtendedReg[4]; // Extended Global Mask bytes uint8_t message15MaskReg[4]; // Message 15 Mask bytes canmessage_t message1Reg; uint8_t clkOutReg; // Clock Out Register canmessage_t message2Reg; uint8_t busConfigReg; // Bus Configuration Register canmessage_t message3Reg; uint8_t bitTiming0Reg; // Bit Timing Register byte 0 canmessage_t message4Reg; uint8_t bitTiming1Reg; // Bit Timing Register byte 1 canmessage_t message5Reg; uint8_t interruptReg; // Interrupt Register canmessage_t message6Reg; uint8_t reserved2Reg; canmessage_t message7Reg; uint8_t reserved3Reg; canmessage_t message8Reg; uint8_t reserved4Reg; canmessage_t message9Reg; uint8_t p1ConfReg; canmessage_t message10Reg; uint8_t p2ConfReg; canmessage_t message11Reg; uint8_t p1InReg; canmessage_t message12Reg; uint8_t p2InReg; canmessage_t message13Reg; uint8_t p1OutReg; canmessage_t message14Reg; uint8_t p2OutReg; canmessage_t message15Reg; uint8_t serialResetAddressReg; }; }; } canregs_t __attribute__ ((packed));