1 /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */ 2 #ifndef PLDM_TYPES_H 3 #define PLDM_TYPES_H 4 5 #ifdef __cplusplus 6 #include <cstdint> 7 #else 8 #include <stdint.h> 9 #endif 10 11 typedef union { 12 uint8_t byte; 13 struct bits8 { 14 uint8_t bit0 : 1; 15 uint8_t bit1 : 1; 16 uint8_t bit2 : 1; 17 uint8_t bit3 : 1; 18 uint8_t bit4 : 1; 19 uint8_t bit5 : 1; 20 uint8_t bit6 : 1; 21 uint8_t bit7 : 1; 22 } __attribute__((packed)) bits; 23 } bitfield8_t; 24 25 /** @struct pldm_version 26 * 27 * 28 */ 29 typedef struct pldm_version { 30 uint8_t alpha; 31 uint8_t update; 32 uint8_t minor; 33 uint8_t major; 34 } __attribute__((packed)) ver32_t; 35 36 typedef uint8_t bool8_t; 37 38 typedef union { 39 uint16_t value; 40 struct bits16 { 41 uint8_t bit0 : 1; 42 uint8_t bit1 : 1; 43 uint8_t bit2 : 1; 44 uint8_t bit3 : 1; 45 uint8_t bit4 : 1; 46 uint8_t bit5 : 1; 47 uint8_t bit6 : 1; 48 uint8_t bit7 : 1; 49 uint8_t bit8 : 1; 50 uint8_t bit9 : 1; 51 uint8_t bit10 : 1; 52 uint8_t bit11 : 1; 53 uint8_t bit12 : 1; 54 uint8_t bit13 : 1; 55 uint8_t bit14 : 1; 56 uint8_t bit15 : 1; 57 } __attribute__((packed)) bits; 58 } bitfield16_t; 59 60 typedef union { 61 uint32_t value; 62 struct bits32 { 63 uint8_t bit0 : 1; 64 uint8_t bit1 : 1; 65 uint8_t bit2 : 1; 66 uint8_t bit3 : 1; 67 uint8_t bit4 : 1; 68 uint8_t bit5 : 1; 69 uint8_t bit6 : 1; 70 uint8_t bit7 : 1; 71 uint8_t bit8 : 1; 72 uint8_t bit9 : 1; 73 uint8_t bit10 : 1; 74 uint8_t bit11 : 1; 75 uint8_t bit12 : 1; 76 uint8_t bit13 : 1; 77 uint8_t bit14 : 1; 78 uint8_t bit15 : 1; 79 uint8_t bit16 : 1; 80 uint8_t bit17 : 1; 81 uint8_t bit18 : 1; 82 uint8_t bit19 : 1; 83 uint8_t bit20 : 1; 84 uint8_t bit21 : 1; 85 uint8_t bit22 : 1; 86 uint8_t bit23 : 1; 87 uint8_t bit24 : 1; 88 uint8_t bit25 : 1; 89 uint8_t bit26 : 1; 90 uint8_t bit27 : 1; 91 uint8_t bit28 : 1; 92 uint8_t bit29 : 1; 93 uint8_t bit30 : 1; 94 uint8_t bit31 : 1; 95 } __attribute__((packed)) bits; 96 } bitfield32_t; 97 98 typedef union { 99 uint64_t value; 100 struct bits64 { 101 uint8_t bit0 : 1; 102 uint8_t bit1 : 1; 103 uint8_t bit2 : 1; 104 uint8_t bit3 : 1; 105 uint8_t bit4 : 1; 106 uint8_t bit5 : 1; 107 uint8_t bit6 : 1; 108 uint8_t bit7 : 1; 109 uint8_t bit8 : 1; 110 uint8_t bit9 : 1; 111 uint8_t bit10 : 1; 112 uint8_t bit11 : 1; 113 uint8_t bit12 : 1; 114 uint8_t bit13 : 1; 115 uint8_t bit14 : 1; 116 uint8_t bit15 : 1; 117 uint8_t bit16 : 1; 118 uint8_t bit17 : 1; 119 uint8_t bit18 : 1; 120 uint8_t bit19 : 1; 121 uint8_t bit20 : 1; 122 uint8_t bit21 : 1; 123 uint8_t bit22 : 1; 124 uint8_t bit23 : 1; 125 uint8_t bit24 : 1; 126 uint8_t bit25 : 1; 127 uint8_t bit26 : 1; 128 uint8_t bit27 : 1; 129 uint8_t bit28 : 1; 130 uint8_t bit29 : 1; 131 uint8_t bit30 : 1; 132 uint8_t bit31 : 1; 133 uint8_t bit32 : 1; 134 uint8_t bit33 : 1; 135 uint8_t bit34 : 1; 136 uint8_t bit35 : 1; 137 uint8_t bit36 : 1; 138 uint8_t bit37 : 1; 139 uint8_t bit38 : 1; 140 uint8_t bit39 : 1; 141 uint8_t bit40 : 1; 142 uint8_t bit41 : 1; 143 uint8_t bit42 : 1; 144 uint8_t bit43 : 1; 145 uint8_t bit44 : 1; 146 uint8_t bit45 : 1; 147 uint8_t bit46 : 1; 148 uint8_t bit47 : 1; 149 uint8_t bit48 : 1; 150 uint8_t bit49 : 1; 151 uint8_t bit50 : 1; 152 uint8_t bit51 : 1; 153 uint8_t bit52 : 1; 154 uint8_t bit53 : 1; 155 uint8_t bit54 : 1; 156 uint8_t bit55 : 1; 157 uint8_t bit56 : 1; 158 uint8_t bit57 : 1; 159 uint8_t bit58 : 1; 160 uint8_t bit59 : 1; 161 uint8_t bit60 : 1; 162 uint8_t bit61 : 1; 163 uint8_t bit62 : 1; 164 uint8_t bit63 : 1; 165 } __attribute__((packed)) bits; 166 } bitfield64_t; 167 168 typedef float real32_t; 169 170 typedef uint8_t pldm_uuid[16]; 171 172 #endif /* PLDM_TYPES_H */ 173