====== Code formatting conventions ====== ===== Wiki ===== To insert code, use the '''' tag. ===== Casing ===== * **Macros** : ''SCREAMING_SNAKE_CASE'' * **Structures / Types / Constants / Enum members** : ''PascalCase'' * **Variables / Fields** : ''camelCase'' ===== Indentation ===== Thou shalt in all of thy code let ye Allman's style brace indentation be used (i.e. braces should always be on their own line, no matter if ''struct'', ''if'', ''while'', etc.) struct MyStruct { int32_t uselessField; uint16_t anotherUselessField; } ===== Type names ===== When defining fields of number type, you must use the types defined in ''stdint.h'' : ^Specifier^Signing^Bits^Bytes^Minimum Value^Maximum Value^ ^ ''int8_t''|Signed| 8| 1|−27 which equals −128|27 − 1 which is equal to 127| ^ ''uint8_t''|Unsigned| 8| 1|0|28 − 1 which equals 255| ^ ''int16_t''|Signed| 16| 2|−215 which equals −32,768|215 − 1 which equals 32,767| ^ ''uint16_t''|Unsigned| 16| 2|0|216 − 1 which equals 65,535| ^ ''int32_t''|Signed| 32| 4|−231 which equals −2,147,483,648|231 − 1 which equals 2,147,483,647| ^ ''uint32_t''|Unsigned| 32| 4|0|232 − 1 which equals 4,294,967,295| ^ ''int64_t''|Signed| 64| 8|−263 which equals −9,223,372,036,854,775,808|263 − 1 which equals 9,223,372,036,854,775,807| ^ ''uint64_t''|Unsigned| 64| 8|0|264 − 1 which equals 18,446,744,073,709,551,615| Also, when defining pointer fields, the ''*'' must be on the right-side: uint32_t *fieldName; instead of uint32_t* fieldName; ===== Bit fields ===== ==== Horizontal (long descriptions) ==== === 8-bit === ^ Hex ^ Bit ^ Description ^ ^ ''0x0001'' ^ 0 | text | ^ ''0x0002'' ^ 1 | text | ^ ''0x0004'' ^ 2 | text | ^ ''0x0008'' ^ 3 | text | ^ ''0x0010'' ^ 4 | {{:icons:tr4.png?nolink|TR4 only}} Example of double line | ^ ::: ^ ::: | {{:icons:tr5.png?nolink|TR5 only}} Example of double line | ^ ''0x0020'' ^ 5 | text | ^ ''0x0040'' ^ 6 | text | ^ ''0x0080'' ^ 7 | text | === 16-bit === ^ Hex ^ Bit ^ Description ^ ^ ''0x0001'' ^ 0 | text | ^ ''0x0002'' ^ 1 | text | ^ ''0x0004'' ^ 2 | text | ^ ''0x0008'' ^ 3 | text | ^ ''0x0010'' ^ 4 | {{:icons:tr4.png?nolink|TR4 only}} Example of double line | ^ ::: ^ ::: | {{:icons:tr5.png?nolink|TR5 only}} Example of double line | ^ ''0x0020'' ^ 5 | text | ^ ''0x0040'' ^ 6 | text | ^ ''0x0080'' ^ 7 | text | ^ ''0x0100'' ^ 8 | text | ^ ''0x0200'' ^ 9 | text | ^ ''0x0400'' ^ 10 | text | ^ ''0x0800'' ^ 11 | text | ^ ''0x1000'' ^ 12 | text | ^ ''0x2000'' ^ 13 | text | ^ ''0x4000'' ^ 14 | text | ^ ''0x8000'' ^ 15 | text | ==== Vertical (field names only) ==== ^ Hex value ^ ''%%0x8000%%'' ^ ''%%0x7F00%%'' ^^^^^^^ ^^^ ''%%0x001F%%'' ^^^^^ ^ Bit ^ 15 ^ 14 ^ 13 ^ 12 ^ 11 ^ 10 ^ 9 ^ 8 ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ ^ Field | ''%%Field1%%'' | ''%%Field2%%'' ||||||| ||| ''%%Field3%%'' |||||