/* MISRA checks are not performed in header files marked as libraries or
   vendor-provided files or belonging to other subsystems.*/
-e686                       /* Silencing warning on -elib(*) */
-elib(*)                    /* No checks on library files. */
+libclass(angle,ansi)
+libh(core_cm4.h)
+libh(stm32*.h)
+libh(*_lld.h)

/* Reinforcing type checking for some critical types even if not required by
   MISRA.*/
-strong(AJX, systime_t)
-strong(AJX, rtcnt_t)
-strong(AJX, rttime_t)
-strong(AJX, syssts_t)
-strong(AJX, msg_t)
-strong(AJX, cnt_t)
-strong(AJX, ucnt_t)
-strong(AJX, tstate_t)
-strong(AJX, eventmask_t)

/* Permitting anonymous unions.*/
+fan

/* Silencing common non-MISRA info generated by PCLint in -w3 mode. All of
   them have been controlled. Other infos have been fixed in the code.
   Remove temporarily the following -e in order to perform extra code quality
   checks.*/
-e526 -e537 -e552
-e611 -e613
-e714 -e716 -e717 -e749 -e750 -e754 -e757 -e758 -e759 -e766 -e768 -e769 -e773 -e778 -e793
-e826 -e830 -e835 -e845

/* Removing *advisory* directives and rules that would negatively impact
   code readability or not avoidable.*/
-e970                       /* Dir-4.6 */
-e9045                      /* Dir-4.8 */
-e9026                      /* Dir-4.9 */
-e756                       /* Rule-2.3 */
-e9058                      /* Rule-2.4 */
-e755                       /* Rule-2.5 */
-e9003                      /* Rule-8.9 */
-e9067                      /* Rule-8.11 */
-e818                       /* Rule 8.13 */
-e9078                      /* Rule-11.4 */ 
-e9079                      /* Rule-11.5 */ 
-e9049                      /* Rule-13.3 */
-e9084                      /* Rule-13.4 */
-e801                       /* Rule-15.1 */
-e9011                      /* Rule-15.4 */
-e904                       /* Rule-15.5 */
-e9044                      /* Rule-17.8 */
-e9016                      /* Rule-18.4 */
-e844 -e954                 /* Rule-18.13 */
-e9018                      /* Rule-19.2 */
-e9021                      /* Rule-20.5 */
-e9024                      /* Rule-20.10 */

/* Waiver Directive 2.1, Rule 1.1, Rule 1.2, assembler is allowed in some
   modules.*/
-e950

/* Waiver Directive 4.10, PCLint is confused by the guard used in the CMSIS
   header files, the guard is present, suppressing the noise.*/
-e451

/* Waiver Rule 2.2, PCLint marks as pure functions that contain just asm
   code, this does not mean that those functions do nothing.*/
-e522

/* Waiver Rule 3.1, the sequence "//" is mandated by standard license
   headers included on top of all source files. The sequence is part of the
   license URL and cannot be removed.*/
-e9059

/* Waiver Rule 8.4, this rule is disabled for the main() function only because
   it, of course, does not have nor requires a prior declaration.*/
-esym(9075, main)

/* Waiver Rule 8.7, the static analyzer has no visibility of functions called
   from asm modules.*/
-e765

/* Waiver Rule 11.1, casts of function pointers are required by system
   design.*/
-e9074

/* Waiver Rule 11.3, casts among different types are required by system
   design.*/
-e740       /* Wrongly marked as 1.3 in PCLint 9.00L.*/
-e9087

/* Waiver Rule 11.6, cast from integer to pointer is very commonly used
   when accessing peripherals where the numeric address of the registers
   block is cast to a structure pointer.*/
-e923

/* Waiver Rule 16.1, missing break into case. It is a common occurrence and
   thoroughly checked.*/
/* Waiver Rule 16.3, missing break into case. It is a common occurrence and
   thoroughly checked.*/
-e9090
-e9077
-e9042
-e616
-e825

/* Waiver Rule 18.2, pointers arithmetic is required by system design and
   deemed safe.*/
/* Waiver Rule 18.3, comparisons among pointers is required by system design
   and deemed safe.*/
-e946
-e947

/* Waiver Rule 21.1, this is an operating system, its identifiers are
   equivalent in importance to compiler symbols.*/
-e9071