# MISRA C rule violations

Rule 1
  "All code shall conform to ISO 9899 standard C, with no extensions permitted."

Extensions are necessary because ISO C has no way of specifying that a function should be an interrupt service routine, or that we would like data members to be stored in f.ex. EEPROM.

Rule 37
  "Bitwise operations shall not be performed on signed integer types."

The compiler assumes all the 1's we shift around to make bitmasks are signed integers. Specifying them all to be (unsigned int), either directly or via a definition, would fix the rule violations, but also reduce code readability.

Rule 45
  "Type casting from any type to or from pointers shall not be used."

Assigning macro NULL, defined in stdlib.h, to a pointer causes this..

Rule 96
  "In the definition of a function-like macro the whole definition, and each instance of a parameter, shall be enclosed in parentheses."

It is difficult to use parentheses with void function-like macros.

Rule 111
  As the code is running on an 8-bit architecture it is found acceptable to violate the rule.

Rule 127
  Disabled since it is incorrectly trigging on the "time.h" file name; The std lib version of time.h is not allowed used... the one use in this code is a custom time.h file.